3

ComboBox以下に示す連絡方法をリストした があります。はComboBox正しい値を表示するため、ItemSourceバインディングは機能しています。

私がアーカイブしようとしているのは、アプリケーションの起動時に選択した連絡方法を表示することです。選択した値を属性にバインドしようとしましたComboBox.Textが、フィルターの設定方法がわかりません。

これは私の入力データです:

<Contact ShowsInterest="true">
  <Name>Tester</Name>
  <Lastname>Test</Lastname>
  <ContactMethods>
    <ContactMethod Selected="False">Phone</ContactMethod>
    <ContactMethod Selected="False">Email</ContactMethod>
    <ContactMethod Selected="True">Letter</ContactMethod>
    <ContactMethod Selected="False">Mobile</ContactMethod>
  </ContactMethods>
</Contact>

これは私のComboBoxです:

<ComboBox Name="combobox1" 
          ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
          Width="100" Height="25">
    <ComboBox.Text>
        <Binding XPath="Contact/ContactMethods//*[@Selected='true']"/>
    </ComboBox.Text>
</ComboBox>

XPath 式は次のことを行う必要があります: Contact/ContactMethods/ の下の要素を表示します。selected は true です。

編集: Text プロパティを直接設定しても機能しません。

<ComboBox Name="combobox1" 
          ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
          Width="100" Height="25">
    <ComboBox.Text>
        Phone
    </ComboBox.Text>
</ComboBox>

プロパティを使用する必要があると思いますSelectedValue

<ComboBox Name="combobox1" 
          ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
          Width="100" Height="25">
    <ComboBox.SelectedValue>
        Phone
    </ComboBox.SelectedValue>
</ComboBox>

EDIT2: MikroDel のおかげで、これは実用的なソリューションです

<ComboBox Name="combobox1" 
            ItemsSource="{Binding XPath=Contact/ContactMethods//*}" 
            Width="100" Height="25">
    <ComboBox.SelectedValue>
        <Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/>
    </ComboBox.SelectedValue>
</ComboBox>
4

1 に答える 1