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

时间:2013-07-18 14:34:22

标签: wpf mvvm treeview

我有一个在窗口的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;}
     ...
} 

我想代表一个TreeView,它将向我展示学校,班级和学生。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:4)

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

你的对象树应该是学校 - &gt;类 - &gt;学生

班级学校有一个

List<Class>

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>