我有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 Expression应该执行以下操作:在Contact / ContactMethods /下显示Element,其中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>
答案 0 :(得分:2)
这是正确的:
<Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/>