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>