diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs
index 7bf8d3bb68..0b22042652 100644
--- a/src/Avalonia.Controls/TreeView.cs
+++ b/src/Avalonia.Controls/TreeView.cs
@@ -84,6 +84,11 @@ namespace Avalonia.Controls
///
/// Gets or sets a value indicating whether to automatically scroll to newly selected items.
///
+ ///
+ /// This property is of limited use with as it will only scroll
+ /// to realized items. To scroll to a non-expanded item, you need to ensure that its
+ /// ancestors are expanded.
+ ///
public bool AutoScrollToSelectedItem
{
get => GetValue(AutoScrollToSelectedItemProperty);
@@ -531,6 +536,12 @@ namespace Avalonia.Controls
// The IsSelected property is not set on the container: update the container
// selection based on the current selection as understood by this control.
MarkContainerSelected(container, SelectedItems.Contains(item));
+
+ // If the newly realized container is the selected container, scroll to it after layout.
+ if (AutoScrollToSelectedItem && SelectedItem == item)
+ {
+ Dispatcher.UIThread.Post(container.BringIntoView, DispatcherPriority.Loaded);
+ }
}
///