2010-08-17 7 views
9

J'ai un ComboBox qui a son ItemsSource lié à un statique List<CustomSettings> des options. Le composant ComboBox fait partie d'un formulaire lié à une classe CustomObject et l'une des propriétés de cette classe est CustomSettingProperty.WPF - Combobox SelectedItem n'est pas réglé?

Je voudrais lier l'objet SelectedItem de la zone de liste déroulante à la propriété spécifiée dans CustomObject, mais SelectedItem="{Binding Path=CustomSettingProperty}" ne définit pas l'élément sélectionné par défaut. En utilisant les points d'arrêt je peux voir qu'il appelle la méthode get;, donc je pense que le problème pourrait être dans le fait que CustomSettingProperty est créé séparément du List<CustomObject> alors WPF ne pense pas que c'est le même élément.

Y at-il un moyen facile de faire cela? Ou peut-être une alternative puisque la classe CustomSettings contient un Id?

+0

Pouvez-vous donner le code pour CustomSettingProperty? Et peut-être un exemple de comment vous le définissez? – jsmith

Répondre

20

Si l'élément sélectionné n'est pas la même instance que celle contenue dans la liste, vous devez remplacer Equals() dans CustomObject pour indiquer à ComboBox qu'il s'agit du même objet.

Si c'est la même instance, peut-être qu'il est seulement une chose simple, comme le réglage de la BindingMode à TwoWay:

SelectedItem="{Binding Path=CustomSettingProperty,Mode=TwoWay}" 
+1

Merci! Je ne peux pas croire que je n'ai pas pensé à écraser Equals ... Je ne referai pas cette erreur (j'espère) – Rachel

+0

J'ai le même problème mais j'ai été remplacé 'Equals() 'Comment puis-je régler le BindingMode? Note: J'utilise C# et Winforms –

+0

Le mode est TwoWay par défaut n'est-ce pas? –