2015-06-26 72 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