我有收藏品
Dictionary<string, List<Manager>> Stuff;
Manager是具有一些属性的类。 我想将这个字典绑定到TreeView或ListView,如下所示:
键为标题,然后是作为子项的经理列表。例如:
我试过这样的事情:
<TreeView ItemsSource="{Binding Stuff}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<TextBlock Foreground="Red" Text="{Binding Key}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
它显示了标题,但我不知道如何进一步。 或者更改集合并以其他方式绑定它会更好。
修改
我在这个词典中做了不必要的复杂工作。我使用属性string Name;
和List<Managers> Managers;
创建了额外的类Stuff。在主类中使用它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并不是最好的。
答案 0 :(得分:2)
试试这个:
<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>
答案 1 :(得分:1)
试试这个:
<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页面。