WPF MVVM TreeView 组

WPF MVVM TreeView Groups

我有 3 个 class:

  1. 建筑
  2. 办公室

大楼里有办公室,每个办公室里都有人。 我的 ViewModel 有一个 ObservableCollection of Offices,其中一个属性是 Building 和 ObservableCollection。

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

示例:

如果您想在树视图中获得此布局,您将为建筑物和办公室创建 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>