Browse Source

Ensure TreeViewItem.IsSelected is set.

When TreeView.SelectedItem changes.
pull/396/head
Steven Kirk 10 years ago
parent
commit
bfb334ca5e
  1. 23
      src/Perspex.Controls/TreeView.cs
  2. 25
      tests/Perspex.Controls.UnitTests/TreeViewTests.cs

23
src/Perspex.Controls/TreeView.cs

@ -46,8 +46,27 @@ namespace Perspex.Controls
/// </summary>
public object SelectedItem
{
get { return _selectedItem; }
set { SetAndRaise(SelectedItemProperty, ref _selectedItem, value); }
get
{
return _selectedItem;
}
set
{
if (_selectedItem != null)
{
var container = ItemContainerGenerator.Index.ContainerFromItem(_selectedItem);
MarkContainerSelected(container, false);
}
SetAndRaise(SelectedItemProperty, ref _selectedItem, value);
if (_selectedItem != null)
{
var container = ItemContainerGenerator.Index.ContainerFromItem(_selectedItem);
MarkContainerSelected(container, true);
}
}
}
/// <inheritdoc/>

25
tests/Perspex.Controls.UnitTests/TreeViewTests.cs

@ -107,6 +107,31 @@ namespace Perspex.Controls.UnitTests
Assert.True(container.IsSelected);
}
[Fact]
public void Setting_SelectedItem_Should_Set_Container_Selected()
{
var tree = CreateTestTreeData();
var target = new TreeView
{
Template = CreateTreeViewTemplate(),
Items = tree,
DataTemplates = CreateNodeDataTemplate(),
};
var visualRoot = new TestRoot();
visualRoot.Child = target;
ApplyTemplates(target);
var item = tree[0].Children[1].Children[0];
var container = (TreeViewItem)target.ItemContainerGenerator.Index.ContainerFromItem(item);
Assert.NotNull(container);
target.SelectedItem = item;
Assert.True(container.IsSelected);
}
[Fact]
public void LogicalChildren_Should_Be_Set()
{

Loading…
Cancel
Save