我有一个下面定义的类的对象
class XYZ
{
List<XYZ> child;
String header;
}
我想将此对象绑定到树视图。最初,XYZ根将是最顶层的TreeViewItem。 root将具有List子级作为子TreeViewItems。这将以递归方式继续,直到每个XYZ对象的List不为空。每个TreeViewItem都是节点或叶子(如果List子元素为空)。
我可以通过将TreeViewItem作为子窗口添加到父TreeViewItem来以编程方式执行此操作。
级别的数量未知。
我提到了这个答案Bind Object to WPF TreeView,但这里提到的是三级层次结构。
答案 0 :(得分:3)
您只需要为您的viewmodel定义Hierarchical Datatemplate,它应该处理树视图中的多个级别。
确保您使用的集合实现了INotificationPropertyChanged
datatemplate将在
行中<TreeView ItemsSource={Binding child}>
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding child}" DataType="{x:Type vm:XYZ}">
<Grid>
<TextBlock Text="{Binding header}"/>
</Grid>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>