From be2da5cc21e6d45322408376bc1897f5dcfd3e4b Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 7 Dec 2022 09:50:44 +0100 Subject: [PATCH] Reimplemented commented-out code. --- src/Avalonia.Controls/TreeView.cs | 42 +++++++++---------------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index a1cf3cdb53..0c0de9d544 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -468,6 +468,18 @@ namespace Avalonia.Controls protected internal override Control CreateContainerForItemOverride() => new TreeViewItem(); protected internal override bool IsItemItsOwnContainerOverride(Control item) => item is TreeViewItem; + protected internal override void PrepareContainerForItemOverride(Control container, object? item, int index) + { + base.PrepareContainerForItemOverride(container, item, index); + + if (item == SelectedItem) + { + MarkContainerSelected(container, true); + if (AutoScrollToSelectedItem) + Dispatcher.UIThread.Post(container.BringIntoView); + } + } + /// protected override void OnGotFocus(GotFocusEventArgs e) { @@ -831,36 +843,6 @@ namespace Avalonia.Controls return item?.TreeViewOwner == this ? item : null; } - /// - /// Called when a new item container is materialized, to set its selected state. - /// - /// The event sender. - /// The event args. - ////private void ContainerMaterialized(object? sender, ItemContainerEventArgs e) - ////{ - //// var selectedItem = SelectedItem; - - //// if (selectedItem == null) - //// { - //// return; - //// } - - //// foreach (var container in e.Containers) - //// { - //// if (container.Item == selectedItem) - //// { - //// ((TreeViewItem)container.ContainerControl).IsSelected = true; - - //// if (AutoScrollToSelectedItem) - //// { - //// Dispatcher.UIThread.Post(container.ContainerControl.BringIntoView); - //// } - - //// break; - //// } - //// } - ////} - /// /// Sets a container's 'selected' class or . ///