Browse Source

Make DataTemplate-created TreeViewItems namescopes.

Closes #463.
pull/467/head
Steven Kirk 11 years ago
parent
commit
8c9a2e89ad
  1. 2
      src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs
  2. 42
      tests/Perspex.Controls.UnitTests/TreeViewTests.cs

2
src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs

@ -2,7 +2,6 @@
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using System.Collections;
using System.Collections.Generic;
using Perspex.Controls.Templates;
@ -84,6 +83,7 @@ namespace Perspex.Controls.Generators
result.DataContext = item;
}
NameScope.SetNameScope((Control)(object)result, new NameScope());
Index.Add(item, result);
return result;

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

@ -210,6 +210,48 @@ namespace Perspex.Controls.UnitTests
dataContexts);
}
[Fact]
public void Control_Item_Should_Not_Be_NameScope()
{
var items = new object[]
{
new TreeViewItem(),
};
var target = new TreeView
{
Template = CreateTreeViewTemplate(),
Items = items,
};
target.ApplyTemplate();
target.Presenter.ApplyTemplate();
var item = target.Presenter.Panel.LogicalChildren[0];
Assert.Null(NameScope.GetNameScope((TreeViewItem)item));
}
[Fact]
public void DataTemplate_Created_Item_Should_Be_NameScope()
{
var items = new object[]
{
"foo",
};
var target = new TreeView
{
Template = CreateTreeViewTemplate(),
Items = items,
};
target.ApplyTemplate();
target.Presenter.ApplyTemplate();
var item = target.Presenter.Panel.LogicalChildren[0];
Assert.NotNull(NameScope.GetNameScope((TreeViewItem)item));
}
private void ApplyTemplates(TreeView tree)
{
tree.ApplyTemplate();

Loading…
Cancel
Save