wpf - WPF XPath 表达式中的过滤器

标签 wpf xml data-binding xpath .net-4.5

我有一个 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/

相关文章:

WPF 资源的代码隐藏?

c# - 在 View 模型之间通信/传递值的正确方法?

c# - WPF:如何使用自定义窗口制作 native 窗口控制按钮?

php - Ajax 搜索不工作而 XML 已经在运行?

xml - 从 XML 到 Excel 的舍入数字

wpf - 绑定(bind)返回 null 时隐藏多绑定(bind)字符串格式

c# - 将两个可观察的集合组合到一个列表框?

c# - 尝试绑定(bind)到同一用户控件的依赖属性时出错

c# - DataSource 中的更新重置了 CheckedListBox 复选框

xml - 任何基于 XML 的 TEX 替代品?