Browse Source

Make tree roots bold

pull/6191/head
Luis von der Eltz 5 years ago
parent
commit
31d80a9fb6
  1. 25
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreeNode.cs
  2. 2
      src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml

25
src/Avalonia.Diagnostics/Diagnostics/ViewModels/TreeNode.cs

@ -4,24 +4,28 @@ using System.Collections.Specialized;
using System.Reactive;
using System.Reactive.Linq;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.LogicalTree;
using Avalonia.Media;
using Avalonia.VisualTree;
namespace Avalonia.Diagnostics.ViewModels
{
internal abstract class TreeNode : ViewModelBase, IDisposable
{
private IDisposable? _classesSubscription;
private readonly IDisposable? _classesSubscription;
private string _classes;
private bool _isExpanded;
public TreeNode(IVisual visual, TreeNode? parent)
protected TreeNode(IVisual visual, TreeNode? parent)
{
Parent = parent;
Type = visual.GetType().Name;
Visual = visual;
_classes = string.Empty;
FontWeight = Visual is TopLevel or Popup ? FontWeight.Bold : FontWeight.Normal;
if (visual is IControl control)
{
ElementName = control.Name;
@ -52,6 +56,8 @@ namespace Avalonia.Diagnostics.ViewModels
}
}
public FontWeight FontWeight { get; }
public abstract TreeNodeCollection Children
{
get;
@ -95,20 +101,5 @@ namespace Avalonia.Diagnostics.ViewModels
_classesSubscription?.Dispose();
Children.Dispose();
}
private static int IndexOf(IReadOnlyList<TreeNode> collection, TreeNode item)
{
var count = collection.Count;
for (var i = 0; i < count; ++i)
{
if (collection[i] == item)
{
return i;
}
}
throw new AvaloniaInternalException("TreeNode was not present in parent Children collection.");
}
}
}

2
src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml

@ -11,7 +11,7 @@
<TreeDataTemplate DataType="vm:TreeNode"
ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal" Spacing="8">
<TextBlock Text="{Binding Type}"/>
<TextBlock Text="{Binding Type}" FontWeight="{Binding FontWeight}"/>
<TextBlock Text="{Binding Classes}"/>
<TextBlock Foreground="Gray" Text="{Binding ElementName}"/>
</StackPanel>

Loading…
Cancel
Save