我有一个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。
编辑: 即使直接设置文本属性也不起作用。
<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>