2010-04-28 7 views
0

J'ai un contrôle personnalisé Silverlight 4 qui consiste essentiellement en plusieurs éléments Canvas enveloppés dans un ScrollViewer. L'utilisateur peut définir une propriété pour déterminer s'il faut faire défiler ou zoomer en utilisant sa molette. Dans l'événement MouseWheel du contrôle personnalisé, je vérifie s'ils veulent faire défiler ou zoomer. En cas de zoom, je détermine le delta et modifie le niveau de zoom du contrôle personnalisé (qui gère ensuite le code de zoom pour moi).MouseWheel: défilement et zoom

Le problème est que le zoom ne démarre pas tant que la position actuelle de la barre de défilement verticale du ScrollViewer n'est pas en haut ou en bas de la barre de défilement. Une fois leur, le zoom fonctionne parfaitement.

Quelqu'un at-il des suggestions sur la façon dont je peux empêcher le défilement complet de sorte que je ne fais que zoomer (lorsque l'utilisateur veut zoomer, c'est)?

Merci!

+0

Pour approfondir le mystère, je vois que l'événement MouseWheel du contrôle ne se déclenche même pas après que la barre de défilement ait atteint cette hauteur maximale ou minimale. Idem pour le contrôle ScrollViewer. Je me demande si c'est un nouveau comportement de Silverlight 4. Je n'ai pas vu ça dans SL3. – beaudetious

+0

Il devrait y avoir un badge pour répondre à vos propres questions. Je fais cela avec une régularité alarmante. – beaudetious

Répondre

0

On dirait qu'un de mes éléments enfants monopolisait l'événement MouseWheel. J'ai tracé cela en ajoutant des instructions Debug.WriteLine à chaque événement MouseWheel de l'élément enfant ainsi que l'événement MouseWheel du contrôle parent.

Donc, je ne peux pas blâmer SL4. Juste moi. :)

Questions connexes