WPF中没有RootNode的TreeView

时间:2011-03-22 16:22:17

标签: .net wpf xaml treeview hierarchy

我有一个HierarchicalDataTemplate,它是我的TreeView的ItemSource。当TreeView显示数据时,他有一个rootnode。如何删除rootnode?

HierarchicalDataTemplate:

<Window.Resources>

    <HierarchicalDataTemplate DataType="cards" ItemsSource="{Binding XPath=child::node()}">
        <TextBlock Text="Root"/>
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="category" ItemsSource="{Binding XPath=child::node()}">
        <TextBlock Text="{Binding XPath=@name}" />
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="card">
        <TextBlock Text="{Binding XPath=./title}" />
    </HierarchicalDataTemplate>

    <XmlDataProvider x:Key="dataxml" XPath="root/cards" />

</Window.Resources>

的TreeView:

<TreeView Name="treeViewCategory" ItemsSource="{Binding Source={StaticResource dataxml}, XPath=.}"/>

XML:

<root>
  <cards>
    <category name="Categoryname">
      <card>
        <title>something</title>
        ...
        .
      </card>
      <category name="SubCategory">
        <card>
          <title>something else</title>
          ..
          ...
        </card>
      </category>
    </category>
    <card>
      <title>text</title>
      ...
      ..
    </card>
  </cards>
</root>

实际观点:

o Root
    o Categoryname
        - something
        o SubCategory
            - something else
    - text

应该是:

o Categoryname
    - something
    o SubCategory
        - something else
- text

2 个答案:

答案 0 :(得分:4)

当您分配TreeView本身的ItemsSource时,只需更深入一步,以便根的子项成为树视图的项目。

答案 1 :(得分:0)

H.P. H.完美搭配:

<TreeView Name="treeViewCategory" ItemsSource="{Binding Source={StaticResource dataxml}, XPath=./*}" />

我一直试图更改XmlDataProvider的源代码。没想到我应该在TreeView上改变路径: - (

为什么重要?