|
|
@@ -73,12 +73,16 @@ namespace Perspex.Controls
|
|
|
/// <inheritdoc/>
|
|
|
protected override IItemContainerGenerator CreateItemContainerGenerator()
|
|
|
{
|
|
|
- return new TreeItemContainerGenerator<TreeViewItem>(
|
|
|
+ var result = new TreeItemContainerGenerator<TreeViewItem>(
|
|
|
this,
|
|
|
TreeViewItem.HeaderProperty,
|
|
|
TreeViewItem.ItemsProperty,
|
|
|
TreeViewItem.IsExpandedProperty,
|
|
|
_treeView?.ItemContainerGenerator.Index ?? new TreeContainerIndex());
|
|
|
+
|
|
|
+ result.Materialized += ItemMaterialized;
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|