绑定到XML节点名称

时间:2011-11-03 05:22:52

标签: c# wpf xaml xpath

我正在尝试从我的WPF应用程序绑定到一些XML数据。我已经设置了数据上下文,以便我尝试绑定的XmlElement最终看起来像这样:

<Item name="Potion" classes="Healing Item" value="200">
    <Classes>
      <Class value="HealingItem" />
    </Classes>
    <Description value="A low quality potion, it restores a small amount of health" />
    <Components>
      <HealingComponent>
        <BattleHealingComponent>
          <HPHealingComponent value="500" type="Absolute"/>
        </BattleHealingComponent>
      </HealingComponent>
    </Components>
  </Item>

现在问题就在于此。我无法弄清楚我可以绑定的XPath查询只会返回组件子节点。

我知道它会是这样的:

 ItemsSource="{Binding XPath=Components/*/????}"

我被困在什么用于????

此查询的结果应显示“HealingComponent”我尝试在在线XPath可视化工具上使用各种不同的参数,但我无法弄清楚这一点。我准备了关于name(),但我似乎无法让它工作。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

除了ItemsSource您可能还需要ItemTemplate,这应该可行:

<ListBox ItemsSource="{Binding XPath=Components/*}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ListBox>

如果您不打算做任何想象的事情,您也可以使用DisplayMemberPath,但在这种情况下,绑定可确保Name 被解释为XPath,你可能没有使用DisplayMemberPath进行那种控制。