c# - WPF MVVM TreeView 组

标签 c# wpf mvvm treeview

我有 3 节课:

  • 大楼
  • 办公室

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

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

    例子:
  • 1号楼
  • 办公室1
  • 个人1
  • 个人2
  • 个人3
  • 办公室2
  • 人4
  • 个人5
  • 2号楼
  • 办公室3
  • 个人6
  • 人7
  • 个人8
  • 办公室4
  • 个人9
  • 人10
  • 最佳答案

    如果您想在 TreeView 中获得此布局,您将为建筑物和办公室创建 HieratchicalDataTemplates 并为人员创建 DataTemplate。我假设您有一个名为 Name 的文本属性。在所有 3 个 ViewModel 中。

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

    关于c# - WPF MVVM TreeView 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975338/

    相关文章:

    c# - Viewmodel 在需要之前实例化

    c# - 绑定(bind) List<string> 到 ComboBox

    c# - Mailkit SMTP - StartTLS 和 TLS 标志

    c# - StringCollection.Count 意外增加

    时间:2019-03-17 标签:c#WebAPIlocalization

    c# - 确定列表是否为空的最有效方法

    c# - WPF 中的实例绑定(bind)与 MVVM

    c# - 如何在应用程序启动时预加载 XAML?

    c# - WPF 新增功能 - 更新代码中的 TextBlock 导致 NullReferenceException

    android - 为什么是todo-mvp-dagger,而不是todo-mvvm-dagger?