WPF MVVM树视图组
本文关键字:视图 MVVM WPF | 更新日期: 2023-09-27 17:59:06
我有三个类:
- 建筑物
- 办公室
- 个人
大楼里有办公室,每个办公室里都有人。我的ViewModel有一个可观察的办公室集合,其中一个属性是Building和ObservableCollection。
创建绑定到办公室并按建筑、办公室、人员分组的TreeView的最佳方法是什么?
示例:
-
构建1
- Office1
- 人物1
- 人物2
- 人物3
- Office2
- 人物4
- 人员5
- Office1
-
建筑2
- Office3
- 人物6
- 人物7
- 人物8
- Office4
- 人物9
- 人员10
- Office3
如果您想在树视图中获得此布局,您将为建筑物和办公室创建层次结构数据模板,并为个人创建数据模板。我确信您在所有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>