Meilleur auteur de réponses
Problème pour ajouter un item d'une listBox à une autre

Question
-
Bonjour,
Je vous expose mon problème.
J'ai un soucis sur deux listBox avec du contenu bindé. J'aimerai ajouter l'élément selectionné de la listBox de gauche dans celle de droite grâce à un bouton Ajouter.
J'obtiens cette erreur lorsque que je fais cette instruction au click du bouton Ajouter :
listBoxDroite.Items.Add(ListBoxGauche.SelectedItem);
"Opération non valide quand ItemsSource est en cours d'utilisation. Accédez aux éléments et modifiez-les avec ItemsControl.ItemsSource."
J'ai donc essayé ce morceau de code au clic du bouton
ListBoxItem l = new ListBoxItem(); l.Content = "Test"; listBoxDroite.Items.Add(l);
Mais toujours la même erreur...
Voici le code xaml de mes deux listBox :
<ListBox ItemsSource="{Binding}" DisplayMemberPath="nomEmploye" Height="266" HorizontalAlignment="Left" Margin="79,239,0,0" Name="listBoxGauche" VerticalAlignment="Top" Width="177" FontSize="12" HorizontalContentAlignment="Center" /> <ListBox Height="266" ItemsSource="{Binding}" DisplayMemberPath="nomEmploye" HorizontalAlignment="Left" Margin="312,239,0,0" Name="listBoxDroite" VerticalAlignment="Top" Width="170" FontSize="12" HorizontalContentAlignment="Center" /> <Button Content="Ajouter" Height="23" HorizontalAlignment="Left" Margin="262,286,0,0" Name="AjoutEmploye" VerticalAlignment="Top" Width="48" FontSize="12" Click="AjoutEmploye_Click" />
Réponses
-
ce qui est étonnant c'est que vos 2 listbox sont bindés à la même source.
Par définition, comme les listbox sont bindés à des collections, c'est la collection que vous devez modifier, pas la collection dans le listbox.
Donc si votre Listbox1 est bindé à la collection maCol1 et le listbox2 à la collection maCol2, il faut faire :
maCol2.Add((monType) listbox1.selectedItem);
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Trezegoals mercredi 25 avril 2012 17:13
Toutes les réponses
-
ce qui est étonnant c'est que vos 2 listbox sont bindés à la même source.
Par définition, comme les listbox sont bindés à des collections, c'est la collection que vous devez modifier, pas la collection dans le listbox.
Donc si votre Listbox1 est bindé à la collection maCol1 et le listbox2 à la collection maCol2, il faut faire :
maCol2.Add((monType) listbox1.selectedItem);
Richard Clark
Consultant - Formateur .NET
http://www.c2i.fr
Depuis 1996: le 1er site .NET francophone- Marqué comme réponse Trezegoals mercredi 25 avril 2012 17:13
-
Bonjour et merci beaucoup pour votre réponse.
J'ai résolu le problème, en effet je voulais modifier les listBox au lieu des collection donc ça n'allait pas.
J'ai eu quelques soucis pour récupérer le SelectedItem mais j'ai réussi après avoir fait ça :
Employe e1 = listBoxLesEmployes.SelectedItem as Employe;
maCol2.Add(e1);