2013-12-13 61 views
1

我有收集绑定词典<字符串,列表<Class>>到TreeView控件

Dictionary<string, List<Manager>> Stuff; 

管理器类的一些属性。 我想将此字典绑定到TreeView或ListView,如下所示:

作为标题的关键字,然后是管理员列表作为子项。例如:

  • 主任(从字典中它的键)
    • 约翰(它的属性Manager.Name)
    • 史蒂夫
  • 所有者
    • 杰克

我想是这样的:

<TreeView ItemsSource="{Binding Stuff}"> 
        <TreeView.ItemTemplate> 
         <HierarchicalDataTemplate> 
          <TextBlock Foreground="Red" Text="{Binding Key}" /> 
         </HierarchicalDataTemplate> 
        </TreeView.ItemTemplate> 
</TreeView> 

这表明我的标题,但我不知道如何进一步做到这一点。 或者,也许最好更改集合并以其他方式进行绑定。

编辑

我不必要地复杂这本词典的工作。我创建了属性为string Name;List<Managers> Managers;的额外课程资料。使用它在主类为ObservableCollection<Stuff> Stuff;,它正常工作与此XAML:

<TreeView ItemsSource="{Binding Stuff}"> 
        <TreeView.ItemTemplate> 
         <HierarchicalDataTemplate ItemsSource="{Binding Managers}"> 
          <TextBlock Foreground="Red" Text="{Binding Name}" /> 
          <HierarchicalDataTemplate.ItemTemplate> 
           <DataTemplate> 
            <TextBlock Text="{Binding Name}" /> 
           </DataTemplate> 
          </HierarchicalDataTemplate.ItemTemplate> 
         </HierarchicalDataTemplate> 
        </TreeView.ItemTemplate> 
</TreeView> 

所以是使用Dictionairy是不是最好在这种情况下。

回答

2

试试这个:

<TreeView ItemsSource="{Binding Stuff}"> 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Values}"> 
      <TextBlock Foreground="Red" Text="{Binding Key}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

但是,我总是建议使用ObservableCollection<CustomDataType>ItemsSource,因为它只是使整个工作更加简单。有关HierarchicalDataTemplate的更多帮助,请参阅MSDN上的HierarchicalDataTemplate Class页面。

+0

它不工作,这也说明我只是个按键,无需值,但NVM。我编辑了我的帖子。 – Powderek

3

试试这个:

<TreeView Name="treeView1" ItemsSource="{Binding Stuff}" > 
    <TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}"> 
      <TextBlock Foreground="Red" Text="{Binding Path=Key}" /> 
      <HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 
相关问题