WPF:将递归字典绑定到TreeView

时间:2014-08-15 18:57:44

标签: c# wpf xaml dictionary treeview

我想使用XAML显示Dictionary<string, object>的TreeView。每个词典的值都是stringDictionary<string, object>Dictionary<string, object[]>。我无法找到显示所有三种情况的XAML。以下XAML将显示一个漂亮的TreeView,但终端节点(字符串)是空行。什么是正确的XAML或我必须使用转换器?

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

2 个答案:

答案 0 :(得分:0)

您应该提供多个具有string s专业化的模板:

<TreeView xmlns:system="clr-namespace:System;assembly=mscorlib">
    <TreeView.Resources>
        <HierarchicalDataTemplate ItemsSource="{Binding Value}">
            <TextBlock Text="{Binding Key}"/>
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type system:String}">
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </TreeView.Resources>
</TreeView>

答案 1 :(得分:0)

创建多个分层数据模板,然后使用ItemTemplateSelector根据所显示对象的类型在它们之间进行选择。