Meilleur auteur de réponses
Drag & Drop depuis un GridView sans scroll

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.
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
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
Toutes les réponses
-
Bonjour
Une idée (pas testée) c'est de faire les éléments de la liste des Thumbs.
Je pense que ça vas éliminer le problème avec le HorizontalScroll.
Cordialement,
-
Bonjour,
Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement,
Aurel
-
Bonjour,
Nous changeons le type de votre question à « Discussion générale ». Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.
Merci !
Cordialement,
Aurel
-
-
Bonjour
Plus de details vous :
http://msdn.microsoft.com/fr-fr/library/system.windows.controls.primitives.thumb.aspx
Cordialement,
-
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