2010-07-26 5 views
0

J'ai un combobox dans WPF comme ceci:Comment lier une propriété différente sur ComboBox SelectedItem?

<ComboBox Text="Select Language..." IsEditable="True" IsReadOnly="True" 
      ItemsSource="{Binding XPath=item/@name, Source={StaticResource Items}}" 
      SelectedItem="{Binding Path=Test, Mode=OneWayToSource}"/> 

Où est Articles:

<XmlDataProvider x:Key="Items" Source="/itemlist.xml" XPath="/itemlist"/> 

test est une propriété de type objet sur ViewModel qui est défini comme datacontext d'une fenêtre.

Tout fonctionne correctement, et ma propriété Test reçoit l'objet XmlNode, ce qui est logique.

Cependant, je souhaite recevoir attribut différent de celui xml par exemple XPath=item/@value

Comment puis-je faire cela?

Répondre

1

Utilisation DisplayMemberPath et SelectedValuePath:

<ComboBox Text="Select Language..." IsEditable="True" IsReadOnly="True" 
    ItemsSource="{Binding XPath=item, Source={StaticResource Items}}" 
    DisplayMemberPath="@name" 
    SelectedValuePath="@id" 
    SelectedValue="{Binding Path=Test, Mode=OneWayToSource}"/> 

L'élément sélectionné sera l'élément item, il affiche l'attribut name, et il va se lier à l'attribut id-Test.

+0

Merci! c'est très gentil. Je ne savais pas que ces propriétés supportaient XPath. – Kugel

Questions connexes