Привязка отображения списка и фактических значений к узлу XML - PullRequest
1 голос
/ 13 декабря 2010

У меня есть следующий набор XML:

...<spotTerms>
    <terms xmlns= "">
      <term tag="1m" display="1M"/>
      <term tag="3m" display="3M"/>
      <term tag="6m" display="6M"/>...

Я успешно связал список с этим XML, используя следующее:

XmlDataProvider x:Key="Symbols" XPath="/symbols" Source="Config\Symbols.xml"/> 
...
<ListBox x:Name="SpotMonths" 
         Style="{StaticResource SymbolChooserListBox}"                                         
         ItemsSource="{Binding Source={StaticResource Symbols}, XPath=spotTerms/terms/term/@display}"                                     
         SelectionMode="Multiple"
         HorizontalContentAlignment="Stretch" Background="#00000000"/>

Мой план - строить строки в зависимости от того, какие предметы были выбраны. С этой целью я хотел бы иметь возможность использовать один атрибут XML для отображения, а другой - для фактической конкатенации строк.

например. Я хотел бы иметь возможность отображать «1M», но использовать «1m» на заднем конце.

Может кто-нибудь помочь с синтаксисом для этого?

РЕДАКТИРОВАТЬ: Ответ Робертос помог мне. В случае, если у других есть такая же проблема, это последний фрагмент XAML, который я использовал:

<ListBox x:Name="SpotMonths"  
                                Style="{StaticResource SymbolChooserListBox}"                                          
                                ItemsSource="{Binding Source={StaticResource Terms}}"    
                                SelectedValuePath="@tag"
                                DisplayMemberPath="@display"
                                SelectionMode="Multiple" 
                                HorizontalContentAlignment="Stretch" Background="#00000000" />

1 Ответ

2 голосов
/ 13 декабря 2010

Требуемое свойство ItemsControl.DisplayMemberPath .

Ваш код может выглядеть так:

<XmlDataProvider x:Key="Terms" XPath="/symbols/spotTerms/terms/term" Source="Config\Symbols.xml"/> 

<ListBox x:Name="SpotMonths" 
         Style="{StaticResource SymbolChooserListBox}"                                         
         ItemsSource="{Binding Source={StaticResource Terms}, XPath=@tag}"                                     
         SelectionMode="Multiple"
         HorizontalContentAlignment="Stretch" Background="#00000000"
         DisplayMemberPath="@display" />
...