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 .
///