WPF MVVM树视图组

本文关键字:视图 MVVM WPF | 更新日期: 2023-09-27 17:59:06

我有三个类:

  1. 建筑物
  2. 办公室
  3. 个人

大楼里有办公室,每个办公室里都有人。我的ViewModel有一个可观察的办公室集合,其中一个属性是Building和ObservableCollection。

创建绑定到办公室并按建筑、办公室、人员分组的TreeView的最佳方法是什么?

示例:

  • 构建1

    • Office1
      • 人物1
      • 人物2
      • 人物3
    • Office2
      • 人物4
      • 人员5
  • 建筑2

    • Office3
      • 人物6
      • 人物7
      • 人物8
    • Office4
      • 人物9
      • 人员10

WPF MVVM树视图组

如果您想在树视图中获得此布局,您将为建筑物和办公室创建层次结构数据模板,并为个人创建数据模板。我确信您在所有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>