WPF,在TreeView中显示属性值而不是节点名称

时间:2010-08-04 14:55:48

标签: wpf xml xaml xpath

如果我有TreeView的以下数据模板,我需要更改哪些内容,以便每个TreeViewItem显示每个XML节点上name属性的值,而不是节点名称?

<HierarchicalDataTemplate x:Key="NodeTemplate">
    <TextBlock x:Name="tb"/>
    <HierarchicalDataTemplate.ItemsSource>
        <Binding XPath="child::node()" />
    </HierarchicalDataTemplate.ItemsSource>
    <HierarchicalDataTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
            <Setter TargetName="tb" Property="Text" Value="{Binding Path=Value}"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
            <Setter TargetName="tb" Property="Text" Value="{Binding Path=Name}"/>
        </DataTrigger>
    </HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>

2 个答案:

答案 0 :(得分:2)

用这个替换你的绑定:

<Setter TargetName="tb" Property="Text" Value="{Binding Path=Attributes[Name].Value}" />

this question找到答案。

答案 1 :(得分:2)

无论如何,只需将Path=NamePath=Value替换为两个XPath=@name中的Setter