wpf - 在 WPF 中设置具有 2 个级别的 TreeView HierarchicalDataTemplate

标签 wpf mvvm treeview

我有一个在窗口的 DataContext 中表示的 View 模型。

public class SchoolViewModel:ViewModelBase
{
      public ObservableCollection<SchoolClassGroup> ClassesCollection { get; set; }
            ....             
} 


public class SchooleClassGroup:ViewModelBase
{
     public string ClassName {get;set;}
     public string TeacherName {get;set;}
     public ObservableCollection<Students> StudentCollection{ get; set; }

}

public class Student
{
     public string Name {get;set;}
     public int Age {get;set;}
     public DateTime BirthDate {get;set;}
     ...
} 

我想代表一个 TreeView,它将向我展示学校、类(class)和学生。

我该怎么做?

谢谢!

最佳答案

您需要为具有父子关系的对象树的每个级别创建 HeirarchicalDataTemplate,并为叶节点创建一个简单的 DataTemplate。

你的对象树应该是 School -> Class -> Student

类(class)学校有一个

List<Class>

类类有一个

List<Student>

那就简单了

<Window.Resources>

        <HierarchicalDataTemplate ItemsSource="{Binding Classes}" DataType="{x:Type School}">
            <TextBlock Text="{Binding Name}" />
        </HierarchicalDataTemplate>

        <HierarchicalDataTemplate ItemsSource="{Binding Students}" DataType="{x:Type Class}">
            <TextBlock Text="{Binding Name}" />
        </HierarchicalDataTemplate>

        <DataTemplate DataType="{x:Type Student}">
            <TextBlock Text="{Binding Name}" />
        </DataTemplate >

    </Window.Resources>

    <Grid>
        <TreeView ItemsSource="{Binding Schools}" >
    </Grid>

关于wpf - 在 WPF 中设置具有 2 个级别的 TreeView HierarchicalDataTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726445/

相关文章:

c# - WPF 使用 telerik RadMenu 以编程方式添加子菜单项

wpf - 如何在 wpf mvvm 中隐藏/显示堆栈面板

c# - HierarchicalDataTemplate TreeView - ContainerFromItem 仅返回第一个 Item 的 TreeViewItem

delphi - 如何使用 "levels"填充基于平面列表的 TreeView ?

c# - 数据库连接期间的 UI 锁定

WPF:System.Windows.Interop.InteropBitmap 到 System.Drawing.Bitmap

c# - 共享接口(interface)的数据绑定(bind)错误

c# - 将 GridView 选定项设置为无

c# - 如何展平 WPF TreeView

WPF 数据网格 : Blank Row Missing