2009-07-15 10 views
1

Je ne suis pas en mesure de définir la valeur sélectionnée d'une liste déroulante.Liaison ComboBox dans WPF

c'est ainsi que je vais.

ComboBox x:Name="cmbProjectStatus" ItemsSource="{Binding ItemListCollection}" 
     DisplayMemberPath="Name" 
     SelectedValuePath="ID" 
     SelectedValue="{Binding Path=ItemList.ID}" 
     SelectedItem="{Binding Path=ItemList}" 
     HorizontalAlignment="Stretch" VerticalAlignment="Center" /> 

J'utilise pattern MVVM dans mon projet

S'il vous plaît aider ...

Répondre

4

mais attendez, votre valeur sélectionnée est définie parce que vous définissez SelectedItem et SelectedValuePath;) vous n'avez pas ensemble SelectedValue et
EDIT
ItemList seted comme SelectedItem existe dans ItemListCollection

Cela devrait fonctionner

ComboBox x:Name="cmbProjectStatus" ItemsSource="{Binding ItemListCollection}" 
      DisplayMemberPath="Name" 
      SelectedValuePath="ID" 
      SelectedItem="{Binding Path=ItemList}" 
      HorizontalAlignment="Stretch" VerticalAlignment="Center" /> 

si vous voulez obtenir cela a fonctionné dans votre cas juste surchargent equals méthode dans votre classe d'objet comme celui-ci

public class Item 
    { 
     ... 
     public override bool Equals(object obj) 
     { 
      Item i = (Item)obj; 
      if (i.ID == this.ID) 
       return true; 
      return base.Equals(obj); 
     } 
     ... 
    } 
+0

Que faire si vous ne pouvez pas remplacer Égal parce qu'il est une classe que vous ne pouvez pas modifiy? (tierce personne). Y at-il un moyen de faire face à cela sans un cours d'emballage? – SuperJMN

+0

Je voudrais créer une nouvelle classe ex. ItemViewModel, qui contient Item, et ont Equals substituer là, après l'utiliser comme source de combobox –

+0

C'est ce que j'ai fini par faire! Je pensais qu'il y avait un autre moyen sans l'enrouler ou en surpassant Equals. – SuperJMN

Questions connexes