2009-08-12 55 views
0

給定的XML,看起來像這樣:WPF DataTemplate將XML樹展平爲列表?

<Root> 
    <Fruittree name="Apple" ID="2"> 
     <Branch name="West" ID="1"> 
      <Fruit name="Foo"> 
      <Fruit name="Bar"> 
     </Branch> 
    </Fruittree> 
    <!-- more fruitrees etc... --> 
</Root> 

使用XAML與XmlDataProvider和一個DataTemplate,我想顯示一個列表,也許在列表框:

Apple - West - Foo 
Apple - West - Bar 

因此,項目在列表中每個水果名稱在xml的第三級別。

回答

1

使用綁定使當前位置爲Root/Fruittree,並使用此模板。

<DataTemplate x:Key="flattenTemplate"> 
    <TextBlock> 
     <TextBlock.Text> 
      <MultiBinding StringFormat="{} {0} - {1} - {2}"> 
       <Binding XPath="./Fruit/Branch/@Name" /> 
       <Binding XPath="./Branch/@Name" /> 
       <Binding XPath="./@Name" /> 
      </MultiBinding> 
     </TextBlock.Text> 
    </TextBlock> 
</DataTemplate>