在WPF中将TreeView HierarchyDataTemplate设置为2个级别

在WPF中将TreeView HierarchyDataTemplate设置为2个级别,wpf,mvvm,treeview,Wpf,Mvvm,Treeview,我有一个在窗口的DataContext中表示的视图模型 public class SchoolViewModel:ViewModelBase { public ObservableCollection<SchoolClassGroup> ClassesCollection { get; set; } .... } public class SchooleClassGroup:ViewModelBase {

我有一个在窗口的DataContext中表示的视图模型

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;}
     ...
} 
公共类SchoolViewModel:ViewModelBase
{
公共ObservableCollection类集合{get;set;}
....             
} 
公立学校类别类别组:ViewModelBase
{
公共字符串类名{get;set;}
公共字符串教学器名称{get;set;}
公共可观察集合StudentCollection{get;set;}
}
公立班学生
{
公共字符串名称{get;set;}
公共整数{get;set;}
公共日期时间出生日期{get;set;}
...
} 
我想代表一个树视图,向我展示学校、班级和学生

我怎么做


谢谢

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

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

学校有一个班级

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>