2015-06-26 67 views
0

我有一个叫ClassWithPupils类,它看起来像:分层的数据绑定的TreeView

public class ClassWithPupils : ViewModelBase 
    { 
     public ClassWithPupils(IClass @class) 
     { 
      Class = @class; 
      Pupils = new ObservableCollection<IPupil>(); 
     } 


     public IClass Class 
     { 
      get { return Get<IClass>(); } 
      set { Set(value); } 
     } 

     public ObservableCollection<IPupil> Pupils 
     { 
      get { return Get<ObservableCollection<IPupil>>(); } 
      set { Set(value); } 
     } 
    } 

而且我有一个视图模型包含了ObservableCollection<ClassWithPupils>

private ObservableCollection<ClassWithPupils> classesWithPupils; 

public ObservableCollection<ClassWithPupils> ClassesWithPupils 
{ 
    get { return classesWithPupils ?? (classesWithPupils = new ObservableCollection<ClassWithPupils>()); } 
} 

该集合填充正确的数据库项目。

现在我想要在TreeView中显示ClassesWithPupils层次结构中的所有项目。

我查看到目前为止是这样的:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}"> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding}"> 
      <Label Content="{Binding Class.Name}"/> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

因此类名称显示正确。

不幸的是,我不知道如何将每个ClassWithPupils-Entry的学生集合绑定到TreeView中的正确项目上作为子项。

我想是这样的:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}"> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding}"> 
      <Label Content="{Binding Class.Name}"/> 
      <HierarchicalDataTemplate.ItemTemplate> 
       <HierarchicalDataTemplate ItemsSource="{Binding Pupils}"> 
        <Label Content="{Binding Name}"/> 
       </HierarchicalDataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

没有成功...

所以我的问题是:我怎么能显示学生的姓名作为树视图类的孩子呢?

回答

1

看你的代码后,我在结合已发现只有一个错误,这可能导致所描述的问题,您应该结合学生这样的分层模板中:

<TreeView ItemsSource="{Binding ClassesWithPupils, UpdateSourceTrigger=PropertyChanged}"> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Pupils}"> 
      <Label Content="{Binding Class.Name}"/> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 
+0

看起来不错。我怎样才能显示在父元素的类名? – Tomtom

+0

也许你可以打印显示你的树形图的外观,也许你可以指定更多的细节,你想要在哪里出现类的名字? –

+0

不幸的是我无法打印屏幕。我的树现在有两个根节点,每个节点有两个孩子。儿童的名称显示正确,但根节点为空 – Tomtom