WPF MVVM TreeView组

时间:2015-06-22 08:34:43

标签: c# wpf mvvm treeview

我有3个班级:

  1. 建筑
  2. 办公室
  3. 在建筑物中有办公室,每个办公室都有人。 我的ViewModel有一个ObservableCollection of Offices,其中一个属性是Building和ObservableCollection。

    创建绑定到办公室的TreeView的最佳方法是什么?它由Building,Offices,people组成?

    示例:

    • Building1

      • OFFICE1
        • Person1
        • Person2
        • Person3
      • Office2
        • Person4
        • person5
    • Building2

      • Office3
        • Person6
        • Person7
        • Person8
      • 办事处
        • Person9
        • person10

1 个答案:

答案 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>