Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定到元素属性的XPath可达值_Wpf_Xaml_.net 3.5_Xpath_Binding - Fatal编程技术网

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

WPF绑定到元素属性的XPath可达值,wpf,xaml,.net-3.5,xpath,binding,Wpf,Xaml,.net 3.5,Xpath,Binding,我想从元素的属性绑定到只能通过XPath访问的值 元素是一个组合框,由一些XML填充,其属性是SelectedItem。SelectedItem指向一个XML元素,我想绑定到该元素中的一个子元素的值,该值可以通过XPath访问 到目前为止,XAML看起来是这样的: <StackPanel Orientation="Vertical" Margin="10,10"> <StackPanel Orientation="Horizontal">

我想从元素的属性绑定到只能通过XPath访问的值

元素是一个组合框,由一些XML填充,其属性是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 DataContext="{Binding ElementName=Partner, Path=SelectedItem}" 
        Margin="25,15" Name="Submit" Width="100" Height="30" IsDefault="True"
        CommandParameter="{Binding XPath=PartnerID/text()}">Okay</Button>

1.
FooBar.Com
.
.
.

我的问题是按钮的CommandParameter绑定到一个包含太多信息的XmlElement。我想让CommandParameter引用一个子元素,就像我可以用“XPath=PartnerID”指定一个额外的向下搜索,以返回我真正感兴趣的整数值一样。

最后自己解决了这个问题。解决方案是将按钮的DataContext设置为组合框的SelectedItem,然后将CommandParameter设置为XPath绑定,如下所示:

<Root>
  <Tables>
    <Partners>
      <row>
        <PartnerID>1</PartnerID>
        <Name>FooBar.Com</Name>
      </row>
      <row>
      .
      .
      .
      </row>
    </Partners>
  </Tables>
</Root>
<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>
好的

XML文档中的哪个节点需要选择它的XPath表达式?组合框当前选择的节点的“partnerID”元素。