【问题标题】:Binding Combobox to XML (wpf)将组合框绑定到 XML (wpf)
【发布时间】:2010-06-17 06:50:55
【问题描述】:
<EssenceList>
  <Essence GUID="464">
    <Properties>
      <Property Name="Name">
        <value>mt-1232-1. (1-1-3)</value>
      </Property>
    </Properties>
    <Characteristics>
      <Characteristic GUID="78">
        <value>gadget</value>
      </Characteristic>
      <Characteristic GUID="79">
        <value>measures</value>
      </Characteristic>
    </Characteristics>
    <LinkedEssences>
      <LinkType Type="ObjGroup">
        <LinkedEssence GUID="369" />
      </LinkType>
      <LinkType Type="ObjGroupProp" />
      <LinkType Type="RoleObject">
            <LinkedEssence GUID="5747"/>
      </LinkType>
    </LinkedEssences>
  </Essence>
...
  <Essence GUID="5747" Type="Role">
    <Properties>
      <Property Name="Name">
        <value>UKPG-22</value>
      </Property>
      <Property Name="TagPrefix">
        <value>UKPG22</value>
      </Property>
      <Property Name="useParentTagPrefix">
        <value>0</value>
      </Property>
    </Properties>
  </Essence>
...
  <Essence GUID="5748" Type="Role">
  </Essence>
...

在示例中是一个 xml 文件,其中包含来自数据库的数据。现在我需要将它绑定到一些字段... 我在这里使用 XMLDataProvider

    <Grid.DataContext>
        <XmlDataProvider x:Name="dataxml" XPath="EssenceList/Essence" Source="464.xml"/>
    </Grid.DataContext>

和我绑定的大多数简单的texbox

<TextBox Text="{Binding XPath=/EssenceList/Essence/LinkedEssences/LinkType[1]/LinkedEssence/@GUID}" />

但现在我需要以这种方式绑定组合框: - 文档中的第一个 Essence 包含 LinkedEssences,其中包含 &lt;LinkType Type="RoleObject"&gt;&lt;LinkedEssence GUID="5747"/&gt; - 在下面的文档中有一个完整的描述,其中包含我需要的 NAME 属性

  <Essence GUID="5747" Type="Role">
    <Properties>
      <Property Name="Name">
        <value>UKPG-22</value>
      </Property>
      <Property Name="TagPrefix">
        <value>UKPG22</value>
      </Property>
      <Property Name="useParentTagPrefix">
        <value>0</value>
      </Property>
    </Properties>
  </Essence>

以及此组合框的许多其他可用精华

我设法将它们的列表绑定到组合框

 <ComboBox ItemTemplate="{StaticResource rolelistTemplate}"  ItemsSource="{Binding XPath=/EssenceList/Essence[@Type]}" />

所以它显示得很好,但我无法将它绑定到我的 LinkedEssences。

【问题讨论】:

    标签: wpf xml data-binding combobox


    【解决方案1】:

    我已经解决了这个问题

    <ComboBox SelectedValuePath="@GUID" SelectedValue="{Binding XPath=/EssenceList/Essence[1]/LinkedEssences/LinkType[3]/LinkedEssence[1]/@GUID}" ItemTemplate="{StaticResource rolelistTemplate}" ItemsSource="{Binding XPath=/EssenceList/Essence[@Type]}" IsSynchronizedWithCurrentItem="True" />
    

    所以我只是将 SelectedValuePath 设置为一个属性,并将 SelectedValue 设置为我需要保存的字段)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多