none
Drag & Drop depuis un GridView sans scroll RRS feed

  • Question

  • Bonjour,

    Je suis en train de travailler sur une application de Quiz. J'ai besoin de déplacer les éléments d'une liste de mots vers leurs correspondances. Ci-dessous une illustration.


    (http://sdrv.ms/Y94WEB)

    Pour faire ça, je me suis dit que le plus simple était de mettre la liste de mots dans une ListView (entouré en pointillé sur l'illustration), d'autoriser le CanDrag et d'abonner les éléments représentant les correspondances à l'évènement Drop.
    Jusque ici, à la souris, ça marche bien. En tactile c'est une autre histoire... Les éléments d'une ListView doivent être tiré perpendiculairement pour être déplacé, ce qui rend l'usage plus compliqué.
    Avec un GridView, je peux les descendre mais le ScrollHorizontal reste perturbant pour l'utilisateur. Si je le désactives, je perds le Drag & Drop.

    Ma question, peut-on désactiver tous les types de scroll et garder le Drag & Drop sur ce type de contrôle ?

    Sinon, je pensais aussi à disposer tous les éléments sur un canvas et gérer avec leurs coordonnées mais je trouve ça moins propre et moins scalable.

    Merci d'avance pour vos retours

    • Type modifié Aurel Bera mercredi 5 décembre 2012 08:25 Pas de reponse
    • Type modifié j-vas jeudi 10 janvier 2013 10:55
    jeudi 29 novembre 2012 10:55

Réponses

  • J'ai pu reprendre.

    Les thumbs posaient la même problématique de Drag and drop : faisable uniquement en s'abonnant sur les évènements du pointer. Je n'ai pas trouvé comment connaître l'élément sur lequel je le posais.

    Finalement, voici comment je me suis débrouillé :
    1) Côté C# : J'enregistre mes FrameworkElements dans deux listes (les éléments que je peux déplacer, et les éléments sur lesquels ils peuvent se retrouver)

    2) Côté xaml : J'ai mis mes FrameworkElements dans un Canvas

    3) J'ai ajouté un évènement PointerPressed sur chaque élément à déplacer. Lorsqu'il arrive, j'enregistre la référence vers l'élément dans une propriété tampon.

    4) Un évènement PointerMove sur le Canvas, si ma propriété tampon n'est pas nulle, je déplace les coordonnées de mon élément.

    5) Lors d'un PointerReleased ou d'un PointerLeave sur mon Canvas, je vérifie où est mon élément que je déplaçais et s'il n'est pas sur un autre item (en parcourant les deux listes créées en 1). Et je mets à null ma variable tampon.

    • Marqué comme réponse j-vas jeudi 10 janvier 2013 11:03
    jeudi 10 janvier 2013 11:03

Toutes les réponses