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。

编辑: 即使直接设置文本属性也不起作用。

<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

2

这是正确的:

   <Binding XPath="Contact/ContactMethods/ContactMethod[@Selected='True']"/>
于 2013-04-02T12:35:06.823 回答