我想创建分层树。我从here迈出了每一步,但是由于某种原因,它只显示了我一个层次的深度。
这是我得到的:
可能是什么原因?
XAML
<TreeView SelectedItemChanged="TreeView_SelectedItemChanged" ItemsSource="{Binding Items}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:MyClass}">
<TextBlock Foreground="Red" Text="{Binding Name}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" MouseLeftButtonUp="TreeViewItem_MouseLeftButtonUp"/>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
VIEWMODEL
public class MyClass
{
public string Name { get; set; }
public List<MyClass> Children { get; set; }
}
public class MyViewModel
{
private List<MyClass> _items;
public List<MyClass> Items
{
get
{
return _items;
}
}
public MyViewModel()
{
_items = new List<MyClass>();
_items.Add(new MyClass
{
Name = "1",
Children = new List<MyClass>
{
new MyClass
{
Name = "1_1",
Children = new List<MyClass>
{
new MyClass
{
Name = "1_1_1"
},
new MyClass
{
Name = "1_1_2"
}
}
},
new MyClass
{
Name = "1_2"
}
}
});
}
}
最佳答案
您正在将模板定义为正好两层深,因此将获得两层树 View 。这是因为您明确声明ItemTemplate
的HeirarchicalDataTemplate
应该是没有子代的DataTemplate
。
我不确定您打算使用的模板应该是什么,但是如果删除该内部模板,则应该显示所有项目。或者,您可以将内部模板也设置为HeirarchicalDataTemplate
。
关于c# - 为什么我的 TreeView 仅显示一层深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41799750/