WPF MVVM TreeView 组
WPF MVVM TreeView Groups
我有 3 个 class:
- 建筑
- 办公室
- 人
大楼里有办公室,每个办公室里都有人。
我的 ViewModel 有一个 ObservableCollection of Offices,其中一个属性是 Building 和 ObservableCollection。
创建绑定到办公室并按建筑物、办公室、人员分组的 TreeView 的最佳方法是什么?
示例:
建筑 1
- 办公室 1
- 人 1
- 人 2
- 人 3
- 办公室2
- 人 4
- person5
2号楼
- Office3
- 第 6 个人
- 第 7 个人
- 人 8
- Office4
- 第 9 个人
- 人 10
如果您想在树视图中获得此布局,您将为建筑物和办公室创建 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>
我有 3 个 class:
- 建筑
- 办公室
- 人
大楼里有办公室,每个办公室里都有人。 我的 ViewModel 有一个 ObservableCollection of Offices,其中一个属性是 Building 和 ObservableCollection。
创建绑定到办公室并按建筑物、办公室、人员分组的 TreeView 的最佳方法是什么?
示例:
建筑 1
- 办公室 1
- 人 1
- 人 2
- 人 3
- 办公室2
- 人 4
- person5
- 办公室 1
2号楼
- Office3
- 第 6 个人
- 第 7 个人
- 人 8
- Office4
- 第 9 个人
- 人 10
- Office3
如果您想在树视图中获得此布局,您将为建筑物和办公室创建 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>