我有一个 ComboBox
,其中列出了如下所示的联系方式。 ComboBox
显示正确的值,因此 ItemSource
绑定(bind)正常工作。
我要存档的是在应用程序启动时显示选定的联系方式。我试图将所选值绑定(bind)到 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/下显示元素,其中选择等于 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>
编辑 2: 这是可行的解决方案,感谢 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>
最佳答案
这是正确的:
<Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/>
关于wpf - WPF XPath 表达式中的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15764059/