我想从元素的属性绑定到只能通过XPath访问的值。
元素是从某些XML填充的ComboBox,其属性是SelectedItem。 SelectedItem指向一个XML元素,我想绑定到子元素的值,可以通过XPath来访问它。
到目前为止,XAML看起来像这样:
<StackPanel Orientation="Vertical" Margin="10,10">
<StackPanel Orientation="Horizontal">
<Label>Partner</Label>
<ComboBox Name="Partner" Margin="10,0"
ItemsSource="{Binding XPath=/Root/Tables/Partners/row}"
ItemTemplate="{StaticResource Partner}"/>
</StackPanel>
<Button Margin="25,15" Name="Submit" Width="100" Height="30" IsDefault="True"
CommandParameter="{Binding ElementName=Partner, Path=SelectedItem}">
Okay
</Button>
</StackPanel>
源XML看起来像这样:
<Root>
<Tables>
<Partners>
<row>
<PartnerID>1</PartnerID>
<Name>FooBar.Com</Name>
</row>
<row>
.
.
.
</row>
</Partners>
</Tables>
</Root>
我的问题是Button的CommandParameter绑定到XmlElement,其中包含太多信息。我想让CommandParameter引用一个子元素,有点像我可以用“XPath = PartnerID”指定一个额外的向下钻取来返回我真正感兴趣的整数值。
答案 0 :(得分:6)
结束了自己搞清楚。解决方案是将按钮的DataContext设置为组合框的SelectedItem,然后将CommandParameter设置为XPath绑定,如下所示:
<Button DataContext="{Binding ElementName=Partner, Path=SelectedItem}"
Margin="25,15" Name="Submit" Width="100" Height="30" IsDefault="True"
CommandParameter="{Binding XPath=PartnerID/text()}">Okay</Button>