将TreeView绑定到未知深度的XMLDocuent

时间:2011-06-29 11:56:13

标签: c# wpf xml xaml

我正在尝试绑定一个看起来像

的XMLDocument
<?xml version="1.0" encoding="utf-8"?>
<root>
  <topic id="INDEX">
    <title>Index</title>
    <url>...</url>
    <topic id="Result">
      <title>Result</title>
    ...

其中嵌套的深度未知。如何将其绑定到WPF中的TreeView?

2 个答案:

答案 0 :(得分:0)

看看HierarchicalDataTemplates。这是与TreeView结合使用的常用内容。

之前我没有将它们用于XML数据(您是否将XML加载到XDocument中?),但似乎XMLDataProvider与HierarchicalDataTemplates一起使用way to go

答案 1 :(得分:0)

我实际上已经破解了......线索是使用

<HierarchicalDataTemplate.ItemsSource>
            <Binding XPath="child::node()[@id]" />
 </HierarchicalDataTemplate.ItemsSource>

过滤掉没有id属性的任何节点,以及像

这样的触发器
<HierarchicalDataTemplate.Triggers>
        <DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
                <Setter TargetName="tb" Property="Text" Value="{Binding XPath=title}" />
        </DataTrigger>
 </HierarchicalDataTemplate.Triggers>

其中tb是一个简单的文本框。