将Listbox的显示和实际值绑定到XML节点

时间:2010-12-13 14:11:57

标签: wpf xml listbox bind xpath

我有一组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属性进行显示,将另一个XML属性用于实际的字符串连接。

e.g。我希望能够显示“1M”,但在后端使用“1m”。

任何人都可以帮忙解决这个问题吗?

编辑: Robertos的回答帮助了我。如果其他人遇到同样的问题,这是我用过的最后一块XAML:

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

1 个答案:

答案 0 :(得分:2)

您正在寻找的属性是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" />