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」で追加のドリルダウンを指定して、本当に関心のある整数値を返すことができるかのように。

4

1 に答える 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>
于 2009-01-12T19:54:11.347 に答える