2009-12-13 2 views
2

Lorsque j'essaie d'utiliser la même liste avec plusieurs listes déroulantes, la sélection est partagée avec toutes les listes déroulantes.Comment utiliser plusieurs zones de liste déroulante avec une source de données dans WPF?

Je souhaite que la zone de liste déroulante traite la source de données comme étant la leur et que la sélection ne soit pas partagée. est un ObservableCollection et est un objet d'instance d'application

<ComboBox ItemsSource="{Binding ActiveLanguages}" DisplayMemberPath="Name" /> 

ActiveLanguages.

Cette zone de liste déroulante se trouve sur un modèle et la sélection se répète sur toutes les instances des modèles.

+0

Pouvez-vous poster votre xaml pour voir comment vous avez déclaré les comboBox? Je pense que vous auriez besoin de lier spécifiquement SelectedItem à la même propriété dans votre DataConext pour observer ce comportement ... – kiwipom

+0

* qui aurait dû être DataContext, évidemment;) – kiwipom

+0

Cela n'a pas de sens que la solution de Thomas n'a pas fonctionné. Pouvez-vous élaborer avec le code complet et comment vous tester/voir que tous les comboboxes partagent la sélection – Zied

Répondre

5

Définissez la propriété IsSynchronizedWithCurrentItem false

+0

ne fonctionne pas :(De l'aide docs il semble que vous avez raison, mais ... – Rohit

2

faire une copie peut manger beaucoup de mémoire en fonction de la taille de la liste.

Un bien meilleur moyen est d'utiliser une BindingSource. Chaque objet UI définit sa source de données sur une nouvelle copie d'un BindingSource.

Les BindingSources définissent tous leur .datasource = la même instance de la liste à laquelle vous essayez de vous lier.

Questions connexes