diff --git a/src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs b/src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs index 11a56aa556..b6c1f48158 100644 --- a/src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs +++ b/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; diff --git a/tests/Perspex.Controls.UnitTests/TreeViewTests.cs b/tests/Perspex.Controls.UnitTests/TreeViewTests.cs index 4d9aa925ec..fdc86e4a2b 100644 --- a/tests/Perspex.Controls.UnitTests/TreeViewTests.cs +++ b/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();