IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Drag and Drop entre ListView


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2005
    Messages : 66
    Points : 46
    Points
    46
    Par défaut Drag and Drop entre ListView
    Bonsoir,

    J'essaie de faire un drag n' drop entre deux listView ayant chacune une list<Object> comme ItemSource.

    Le but est de passer des élément d'une liste à l'autre.
    La copie de l'objet se passe bien et l'ajout à la deuxième liste aussi mais je ne peux pas supprimer d'élément de ma première liste car l'ItemSource est en cours d'utilisation.

    L'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Opération non valide quand ItemsSource est en cours d'utilisation. Accédez aux éléments et modifiez-les avec ItemsControl.ItemsSource."
    Des idées ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Comment tu fais pour faire ta suppression (celle qui déclenche cette erreur ?)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2005
    Messages : 66
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void Drop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(SLA)))
                {
                    e.Effects = DragDropEffects.Copy;
                    SLA_List2.Items.Add((SLA)e.Data.GetData(typeof(SLA)));
     
                    SLA_List.Items.Remove((SLA)e.Data.GetData(typeof(SLA)));
                }
     
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
    SLA_List et SLA_List2 étant deux listView bindées avec des List<SLA>

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Si l'exception survient lorsque tu essayes de supprimer l'élément, alors le pb vient de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SLA_List.Items.Remove((SLA)e.Data.GetData(typeof(SLA)));
    Pour éviter cette erreur, il ne faut pas que tu passes par la propriété Items mais par la source de ton controle: il faut que tu travailles directement sur la collection qui est à l'origine de ton binding.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2005
    Messages : 66
    Points : 46
    Points
    46
    Par défaut
    J'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
            void SLA_List2_Drop(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(typeof(SLA)))
                {
                    e.Effects = DragDropEffects.Copy;
                    ((ListView) sender).Items.Add((SLA)e.Data.GetData(typeof(SLA)));
                }
     
                else
                {
                    e.Effects = DragDropEffects.None;
                }
            }
     
            void SLA_List_DragLeave(object sender, DragEventArgs e)
            {
                ((List<SLA>)((ListView)sender).ItemsSource).Remove((SLA)e.Data.GetData(typeof(SLA)));
            }
    Pas d'erreur mais la ListView SLA_List1 ne se mets pas à jour.
    Est ce que je dois implémenter quelques notification dans ma List<SLA> ?

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Oui, plutot que d'utiliser List<SLA>, utilise une ObservableCollection<SLA>, qui implémente les interfaces nécessaires à la MAJ de l'IHM lorsque la collection est modifiée

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2005
    Messages : 66
    Points : 46
    Points
    46
    Par défaut
    Ok,

    Je crois que mes problèmes viennent plus d'un souci de conception.

    J'ai vu un post sur ton blog a propos de MVVM. Je pense que je vais regarder ça d'abord !

    Merci de ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]drag and drop entre deux listbox
    Par Yolak dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/06/2012, 14h37
  2. Drag and Drop entre 2 JTree
    Par Lebas dans le forum Composants
    Réponses: 1
    Dernier message: 07/02/2007, 11h59
  3. [Débutant(e)][VB.NET] Drag and drop entre 2 treeviews
    Par - Manuella Leray - dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/10/2005, 15h54
  4. [FLASH MX2004] Drag and drop entre deux List
    Par aldo-tlse dans le forum Flash
    Réponses: 15
    Dernier message: 24/09/2005, 01h10
  5. Drag and Drop entre listbox
    Par zwoke dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/07/2004, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo