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 Drop Validation


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut Drag Drop Validation
    J'ai une liste hiérarchisée de catégories que j'affiche avec un TreeView.

    J'ai implémenté un drag drop pour déplacer les catégories dans d'autres catégories. En clair : pour modifier la catégorie parente d'une catégorie.

    Par contre, je rencontre un problème un peu con : je peux déplacer une catégorie A vers une de ses catégories descendantes A1, A1a, etc...
    En imaginant qu'on ait une hiérarchie du genre A ( A1 ( A1a, A1b, ...), A2, ...), B, ...

    Alors évidemment ça pose problème, parce que déjà c'est pas du tout logique vis à vis des données et qu'ensuite, le TreeView n'est pas capable d'afficher un graphe .

    J'ai donc implémenté une méthode "CanMove(Category src, Category dst)" qui me permet de déterminer si on peut déplacer la catégorie src dans la catégorie dst. (dst pouvant être nulle, dans le cas où on déplace src dans la racine).

    Ensuite, j'ai utilisé cette méthode dans l'eventhandler DragOver de mon treeview :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void tree_DragOver(object sender, DragEventArgs e)
    {
    	if ( e.Data.GetDataPresent(typeof(Category)) &&
    		this.Editor.CanMove(
    			( Category )e.Data.GetData(typeof(Category)),
    			(e.OriginalSource as FrameworkElement).DataContext as Category
    		) ) {
    		e.Effects = DragDropEffects.Move;
    	} else {
    		e.Effects = DragDropEffects.None;
    	}
    }

    Et, ça ne suffit apparemment pas, dans la mesure où je peux toujours déplacer mes catégories n'importe où.

    Alors, j'ai également fait le test CanMove dans l'eventhandler Drop du treeview, et dans ce cas, ça marche. On ne peut plus déplacer les catégories n'importe où, mais malheureusement, c'est moche, lors du drag drop, le curseur garde la forme "déposer ici" plutôt que "drop impossible", même quand je passe sur des catégories descendantes de la catégorie en cours de déplacement...

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    et si tu testes dans l'évènement DragEnter du TreeViewItem, plutôt que dans le DragOver du Tree ?

  3. #3
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Ca change rien.

    Autre chose, j'en ai profité pour m'amuser à enlever carrément les événements DragEnter et DragOver, respectivement du TreeViewItem et du TreeView... Et ça change rien.

    Limite ces événements servent à rien quoi.

  4. #4
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    C'est bon, fallait le mettre dans DragOver du TreeViewItem.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par davcha Voir le message
    C'est bon, fallait le mettre dans DragOver du TreeViewItem.
    arf... dans un sens, c'est logique : si la souris est au dessus du TreeViewItem, c'est ce dernier qui reçoit l'évènement et non le TreeView...

  6. #6
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    En fait les 2 reçoivent l'event, c'est juste que le treeviewitem le reçoit en 1er et que c'est à lui de gérer l'event de toute façon : c'est lui qui est concerné, pas le treeview.

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

Discussions similaires

  1. Comment faire un Drag&Drop vers Windows ?
    Par Lung dans le forum Composants VCL
    Réponses: 17
    Dernier message: 21/06/2004, 13h10
  2. [Drag & Drop] Mettre une fiche dans un panel
    Par corwin_d_ambre dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/01/2004, 10h46
  3. [Composant] Drag & Drop de plusieurs valeurs à la fois
    Par slowpoke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/12/2003, 10h26
  4. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12
  5. curseur et drag&drop
    Par Pierrot dans le forum Langage
    Réponses: 4
    Dernier message: 25/09/2002, 19h16

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