2009-01-15 10 views
1

J'ai essayé d'utiliser l'événement MouseMove pour suivre la position de la souris.Comment accéder aux événements de mouvement de la souris dans WPF, quel que soit l'emplacement de la souris?

protected override void OnMouseMove(MouseEventArgs e) 

Cela fonctionne lorsque la souris est sur le UIElement donné (dans ce cas, la fenêtre de ma demande,) mais je souhaite accéder à ces données, peu importe où la souris est, et de préférence même, peu importe si oui ou non mon application a un accent.

Je pensais que Mouse.Capture était la solution, et je l'ai utilisé pour capturer à ma fenêtre, cependant MouseMove n'est toujours levé que lorsque la souris est au-dessus de la fenêtre.

Est-ce que quelqu'un sait comment obtenir des événements MouseMove (ou similaire) indépendamment de la position de la souris?

Répondre

2

Si vous voulez faire dans les limites de votre application, vous devez utiliser l'événement PreviewMouseMove. Votre Window obtiendra toujours cette première avant qu'il ne se dirige vers des éléments enfants. Si vous gérez MouseMove au niveau Window, les éléments enfants peuvent marquer l'événement comme étant géré et vous ne pouvez donc jamais obtenir l'événement.

Une alternative à l'utilisation PreviewMouseMove est sous-classe Window et joindre un gestionnaire de classe à MouseMove et spécifier que vous souhaitez toujours comme notification, que quelqu'un d'autre a marqué l'événement traité. Plus d'infos disponibles here.

+0

Puisque cette solution ne fonctionne que dans les limites de mon application, ce n'est pas ce que je cherche. Merci pour le lien, cependant: la gestion des événements WPF est beaucoup plus logique maintenant. –