diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml index 86137dfc57a..fd631f0dffb 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml @@ -20,6 +20,7 @@ diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs index 1b61986ce60..3e1a238b362 100644 --- a/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs +++ b/src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Linq; using Avalonia.Controls; using Avalonia.Controls.Generators; @@ -6,6 +7,7 @@ using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.Media; +using Avalonia.VisualTree; namespace Avalonia.Diagnostics.Views { @@ -100,12 +102,19 @@ private void TreeViewItemMaterialized(object sender, ItemContainerEventArgs e) private void TreeViewItemTemplateApplied(object sender, TemplateAppliedEventArgs e) { var item = (TreeViewItem)sender; - var headerPresenter = item.HeaderPresenter; - headerPresenter.ApplyTemplate(); - var header = headerPresenter.Child; - header.PointerEnter += AddAdorner; - header.PointerLeave += RemoveAdorner; + // This depends on the default tree item template. + // We want to handle events in the item header but exclude events coming from children. + var header = item.FindDescendantOfType(); + + Debug.Assert(header != null); + + if (header != null) + { + header.PointerEnter += AddAdorner; + header.PointerLeave += RemoveAdorner; + } + item.TemplateApplied -= TreeViewItemTemplateApplied; } }