From 6cf9a435827d6603e727796660ceb634acc839cb Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Sat, 23 Jan 2016 21:43:27 +0100 Subject: [PATCH] Set IsSelected on newly materialized TreeViewItems. --- src/Perspex.Controls/TreeViewItem.cs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Perspex.Controls/TreeViewItem.cs b/src/Perspex.Controls/TreeViewItem.cs index e2d8107cfc..e68a77b56e 100644 --- a/src/Perspex.Controls/TreeViewItem.cs +++ b/src/Perspex.Controls/TreeViewItem.cs @@ -73,12 +73,16 @@ namespace Perspex.Controls /// protected override IItemContainerGenerator CreateItemContainerGenerator() { - return new TreeItemContainerGenerator( + var result = new TreeItemContainerGenerator( this, TreeViewItem.HeaderProperty, TreeViewItem.ItemsProperty, TreeViewItem.IsExpandedProperty, _treeView?.ItemContainerGenerator.Index ?? new TreeContainerIndex()); + + result.Materialized += ItemMaterialized; + + return result; } /// @@ -119,5 +123,21 @@ namespace Perspex.Controls base.OnKeyDown(e); } + + private void ItemMaterialized(object sender, ItemContainerEventArgs e) + { + var selectedItem = _treeView?.SelectedItem; + + if (selectedItem != null) + { + foreach (var container in e.Containers) + { + if (container.Item == selectedItem) + { + ((TreeViewItem)container.ContainerControl).IsSelected = true; + } + } + } + } } }