WPF绑定到元素属性的XPath可达值

3

我希望绑定到一个仅通过元素属性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>

我的问题是,按钮的CommandParameter绑定了一个包含过多信息的XmlElement。我希望CommandParameter可以引用子元素,就像如果我能够使用“XPath = PartnerID”指定额外的钻取来返回我真正感兴趣的整数值。


那么,您需要为XML文档中的哪个节点编写XPath表达式来选择它? - Dimitre Novatchev
当前由ComboBox选择的节点的"partnerID"元素。 - Chris Wenham
1个回答

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接