2010-12-13 7 views
1

ich eine Reihe von XML haben wie folgt:ein ListBox Display und Istwerten in eine XML-Knoten Bindung

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"/> 

:

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

ich erfolgreich ein Listenfeld auf diese XML mit dem folgenden gebunden haben Mein Plan ist, Strings abhängig von den ausgewählten Elementen zu erstellen. Zu diesem Zweck möchte ich in der Lage sein, ein XML-Attribut für die Anzeige und ein anderes für die tatsächliche String-Verkettung zu verwenden.

z.B. Ich möchte in der Lage sein, "1M" anzuzeigen, aber "1m" am hinteren Ende zu verwenden.

Kann jemand mit der Syntax dafür helfen?

EDIT: Robertos Antwort hat mir geholfen. Für den Fall, andere das gleiche Problem haben, ist dies das letzte Stück von XAML ich verwenden:

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

Antwort

2

Die Immobilie Sie suchen ist ItemsControl.DisplayMemberPath.

Code könnte wie folgt aussehen:

<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}, [email protected]}"          
     SelectionMode="Multiple" 
     HorizontalContentAlignment="Stretch" Background="#00000000" 
     DisplayMemberPath="@display" /> 
+0

Danke für Ihre Hilfe Robertos - eine sehr gute und prägnante Antwort! Ich fand, dass, wenn ich auch einen Pfad für SelectedValuePath hinzufügte, ich genau das Verhalten bekam, nach dem ich suchte. –

Verwandte Themen