【问题标题】:WPF binding to XPath-reachable value of an element propertyWPF 绑定到元素属性的 XPath 可达值
【发布时间】:2010-09-30 23:35:06
【问题描述】:

我想从元素的属性中绑定一个只能通过 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”指定一个额外的向下钻取来返回我真正感兴趣的整数值。

【问题讨论】:

  • 那么,对于 XML 文档中的哪个节点,您需要选择它的 XPath 表达式?
  • ComboBox当前选择的节点的“partnerID”元素。

标签: wpf xaml .net-3.5 xpath binding


【解决方案1】:

最终自己解决了。解决方案是将按钮的 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>

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2018-05-14
    • 2011-01-27
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多