【问题标题】:Binding Dictionary<string,List<Class>> to TreeView将 Dictionary<string,List<Class>> 绑定到 TreeView
【发布时间】:2014-01-01 08:32:00
【问题描述】:

我有收藏

Dictionary<string, List<Manager>> Stuff;

Manager 是具有一些属性的类。 我想像这样将此字典绑定到 TreeView 或 ListView:

键作为标题,然后将经理列表作为子项。例如:

  • 导演(字典中的关键)
    • John(它的属性 Manager.Name)
    • 史蒂夫
  • 所有者
    • 杰克

我尝试过这样的事情:

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

它显示了标题,但我不知道如何进一步说明。 或者改变集合并以其他方式绑定它会更好。

编辑

这本词典让我的工作变得不必要地复杂。我创建了一个类 Stuff,其属性为 string Name;List&lt;Managers&gt; Managers;
在主类中使用它作为ObservableCollection&lt;Stuff&gt; 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>

所以在这种情况下使用字典并不是最好的。

【问题讨论】:

    标签: c# wpf xaml treeview


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

      试试这个:

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

      但是,我始终建议使用ObservableCollection&lt;CustomDataType&gt; 作为ItemsSource,因为它只会让整个工作变得更简单。有关 HierarchicalDataTemplate 的更多帮助,请参阅 MSDN 上的 HierarchicalDataTemplate Class 页面。

      【讨论】:

      • 它不起作用,它也只显示没有值但 nvm 的键。我编辑了我的帖子。
      猜你喜欢
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多