|
|
@@ -971,6 +971,40 @@ namespace Avalonia.Controls.UnitTests
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void Removing_TreeView_From_Root_Should_Preserve_TreeViewItems()
|
|
|
+ {
|
|
|
+ // Issue #3328
|
|
|
+ var tree = CreateTestTreeData();
|
|
|
+ var target = new TreeView
|
|
|
+ {
|
|
|
+ Template = CreateTreeViewTemplate(),
|
|
|
+ Items = tree,
|
|
|
+ };
|
|
|
+
|
|
|
+ var root = new TestRoot();
|
|
|
+ root.Child = target;
|
|
|
+
|
|
|
+ CreateNodeDataTemplate(target);
|
|
|
+ ApplyTemplates(target);
|
|
|
+ ExpandAll(target);
|
|
|
+
|
|
|
+ Assert.Equal(5, target.ItemContainerGenerator.Index.Containers.Count());
|
|
|
+
|
|
|
+ root.Child = null;
|
|
|
+
|
|
|
+ Assert.Equal(5, target.ItemContainerGenerator.Index.Containers.Count());
|
|
|
+ Assert.Equal(1, target.Presenter.Panel.Children.Count);
|
|
|
+
|
|
|
+ var rootNode = Assert.IsType<TreeViewItem>(target.Presenter.Panel.Children[0]);
|
|
|
+ Assert.Equal(3, rootNode.ItemContainerGenerator.Containers.Count());
|
|
|
+ Assert.Equal(3, rootNode.Presenter.Panel.Children.Count);
|
|
|
+
|
|
|
+ var child2Node = Assert.IsType<TreeViewItem>(rootNode.Presenter.Panel.Children[1]);
|
|
|
+ Assert.Equal(1, child2Node.ItemContainerGenerator.Containers.Count());
|
|
|
+ Assert.Equal(1, child2Node.Presenter.Panel.Children.Count);
|
|
|
+ }
|
|
|
+
|
|
|
private void ApplyTemplates(TreeView tree)
|
|
|
{
|
|
|
tree.ApplyTemplate();
|