我正在尝试从我的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(),但我似乎无法让它工作。
任何帮助将不胜感激
答案 0 :(得分:2)
除了ItemsSource
您可能还需要ItemTemplate
,这应该可行:
<ListBox ItemsSource="{Binding XPath=Components/*}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
如果您不打算做任何想象的事情,您也可以使用DisplayMemberPath
,但在这种情况下,绑定可确保Name
不被解释为XPath,你可能没有使用DisplayMemberPath
进行那种控制。