|
|
@@ -35,6 +35,33 @@ namespace Avalonia.Controls.UnitTests
|
|
|
Assert.Equal(new[] { "Grandchild2a" }, ExtractItemHeader(target, 2));
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void Items_Should_Be_Created_Using_ItemTemplate_If_Present()
|
|
|
+ {
|
|
|
+ TreeView target;
|
|
|
+
|
|
|
+ var root = new TestRoot
|
|
|
+ {
|
|
|
+ Child = target = new TreeView
|
|
|
+ {
|
|
|
+ Template = CreateTreeViewTemplate(),
|
|
|
+ Items = CreateTestTreeData(),
|
|
|
+ ItemTemplate = new FuncTreeDataTemplate<Node>(
|
|
|
+ _ => new Canvas(),
|
|
|
+ x => x.Children),
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ ApplyTemplates(target);
|
|
|
+
|
|
|
+ var items = target.ItemContainerGenerator.Index.Items
|
|
|
+ .OfType<TreeViewItem>()
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ Assert.Equal(4, items.Count);
|
|
|
+ Assert.All(items, x => Assert.IsType<Canvas>(x.HeaderPresenter.Child));
|
|
|
+ }
|
|
|
+
|
|
|
[Fact]
|
|
|
public void Root_ItemContainerGenerator_Containers_Should_Be_Root_Containers()
|
|
|
{
|
|
|
@@ -302,6 +329,7 @@ namespace Avalonia.Controls.UnitTests
|
|
|
control.Template = CreateTreeViewItemTemplate();
|
|
|
control.ApplyTemplate();
|
|
|
control.Presenter.ApplyTemplate();
|
|
|
+ control.HeaderPresenter.ApplyTemplate();
|
|
|
ApplyTemplates(control.Presenter.Panel.Children);
|
|
|
}
|
|
|
}
|
|
|
@@ -354,10 +382,21 @@ namespace Avalonia.Controls.UnitTests
|
|
|
|
|
|
private IControlTemplate CreateTreeViewItemTemplate()
|
|
|
{
|
|
|
- return new FuncControlTemplate<TreeViewItem>(parent => new ItemsPresenter
|
|
|
+ return new FuncControlTemplate<TreeViewItem>(parent => new Panel
|
|
|
{
|
|
|
- Name = "PART_ItemsPresenter",
|
|
|
- [~ItemsPresenter.ItemsProperty] = parent[~ItemsControl.ItemsProperty],
|
|
|
+ Children = new Controls
|
|
|
+ {
|
|
|
+ new ContentPresenter
|
|
|
+ {
|
|
|
+ Name = "PART_HeaderPresenter",
|
|
|
+ [~ContentPresenter.ContentProperty] = parent[~TreeViewItem.HeaderProperty],
|
|
|
+ },
|
|
|
+ new ItemsPresenter
|
|
|
+ {
|
|
|
+ Name = "PART_ItemsPresenter",
|
|
|
+ [~ItemsPresenter.ItemsProperty] = parent[~ItemsControl.ItemsProperty],
|
|
|
+ }
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
|