在WPF中设置具有两个层级的TreeView HierarchicalDataTemplate

3
我有一个视图模型,它在窗口的数据上下文中表示。
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;}
     ...
} 

我想展示一棵树形视图,其中包括学校、班级和学生信息。
如何实现呢?
谢谢!
1个回答

4
您需要为具有父子关系的对象树的每个级别创建HeirarchicalDataTemplates,以及叶节点的简单DataTemplate。
您的对象树应该是School -> Class -> Student。
class School 有一个
List<Class>

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接