none
Problème pour ajouter un item d'une listBox à une autre RRS feed

  • 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" />

    mardi 24 avril 2012 18:25

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
    mercredi 25 avril 2012 07:17

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
    mercredi 25 avril 2012 07:17
  • 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);

    mercredi 25 avril 2012 17:13