Привязка к имени узла XML - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь привязать некоторые данные XML из моего приложения WPF.Я настроил контекст данных так, чтобы элемент XmlElement, с которым я пытаюсь связать, в конечном итоге выглядел так:

<Item name="Potion" classes="Healing Item" value="200">
    <Classes>
      <Class value="HealingItem" />
    </Classes>
    <Description value="A low quality potion, it restores a small amount of health" />
    <Components>
      <HealingComponent>
        <BattleHealingComponent>
          <HPHealingComponent value="500" type="Absolute"/>
        </BattleHealingComponent>
      </HealingComponent>
    </Components>
  </Item>

Теперь вот проблема.Я не могу понять, какой запрос XPath можно связать, и он вернет только подузлы компонентов.

Я знаю, что он будет выглядеть примерно так:

 ItemsSource="{Binding XPath=Components/*/????}"

Я застрялна что использовать для ????

В результате этого запроса должен отображаться «HealingComponent». Я пытался поиграть с различными параметрами на онлайн-визуализаторе XPath, но я не могу понять, как это сделать.Я готов насчет имени (), но я не могу заставить его работать.

Буду признателен за любую помощь

1 Ответ

2 голосов
/ 03 ноября 2011

В дополнение к ItemsSource вам, вероятно, нужен ItemTemplate, это должно работать:

<ListBox ItemsSource="{Binding XPath=Components/*}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ListBox>

Если вы не собираетесь делать что-то необычное, вы также можете использовать DisplayMemberPath, хотя в этом случае привязка гарантирует, что Name не интерпретируется как XPath, у вас может не быть такого управления с DisplayMemberPath.

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