Связывание Combobox с XML (wpf) - PullRequest
2 голосов
/ 17 июня 2010
<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>

и большинство простых текстовых полей, которые я связываю как

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

но теперь мне нужно связать комбинированный список следующим образом: - первая сущность в документе содержит LinkedEssences, которая содержит <LinkType Type="RoleObject"> и <LinkedEssence GUID="5747"/> - в приведенном ниже документе есть полное описание для него, которое содержит свойство 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.

1 Ответ

0 голосов
/ 17 июня 2010

я решил проблему просто этим

<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 - в поле, которое мне нужно сохранить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...