我有3个班级:
在建筑物中有办公室,每个办公室都有人。 我的ViewModel有一个ObservableCollection of Offices,其中一个属性是Building和ObservableCollection。
创建绑定到办公室的TreeView的最佳方法是什么?它由Building,Offices,people组成?
示例:
Building1
Building2
答案 0 :(得分:3)
如果您想在树视图中获得此布局,您将为建筑物和办公室创建HieratchicalDataTemplates,为人员创建DataTemplate。我觉得你在所有3个ViewModel中都有一个名为Name
的文本属性。
<TreeView ItemsSource="{Binding Buildings}">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Offices}" DataType="{x:Type VM:BuildingViewModel}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Persons}" DataType="{x:Type VM:OfficeViewModel}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type VM:PersonViewModel}">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</TreeView.Resources>
</TreeView>