在WPF中将自定义对象绑定到TreeView

时间:2014-06-09 12:43:25

标签: c# .net wpf treeview

我有一个下面定义的类的对象

class XYZ
{
    List<XYZ> child;
    String header;
}

我想将此对象绑定到树视图。最初,XYZ根将是最顶层的TreeViewItem。 root将具有List子级作为子TreeViewItems。这将以递归方式继续,直到每个XYZ对象的List不为空。每个TreeViewItem都是节点或叶子(如果List子元素为空)。

我可以通过将TreeViewItem作为子窗口添加到父TreeViewItem来以编程方式执行此操作。

级别的数量未知。

我提到了这个答案Bind Object to WPF TreeView,但这里提到的是三级层次结构。

1 个答案:

答案 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>