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

Chr*_*ham 3 wpf xaml binding xpath .net-3.5

我想从元素的属性绑定到只能与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> 
Run Code Online (Sandbox Code Playgroud)

源XML看起来像这样:

<Root>
  <Tables>
    <Partners>
      <row>
        <PartnerID>1</PartnerID>
        <Name>FooBar.Com</Name>
      </row>
      <row>
      .
      .
      .
      </row>
    </Partners>
  </Tables>
</Root>
Run Code Online (Sandbox Code Playgroud)

我的问题是Button的CommandParameter绑定到XmlElement,其中包含太多信息.我想让CommandParameter引用一个子元素,有点像我可以用"XPath = PartnerID"指定一个额外的向下钻取来返回我真正感兴趣的整数值.

Chr*_*ham 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>
Run Code Online (Sandbox Code Playgroud)