2009-06-20 5 views
1

Je sais qu'il existe un événement de clic de souris pour chaque contrôle, mais existe-t-il un moyen de déterminer quand le clic de la souris n'est pas sur le contrôle?WPF Mouse Click Off Event

+0

1. Non, il n'y a pas d'événement de clic de souris pour chaque contrôle. Seules les choses qui sont logiquement cliquables - par ex. boutons, cases à cocher, éléments de menu, liens hypertexte - ont des événements Click. Les autres contrôles, comme les TextBox et les Images, ne le font pas. Si vous voulez que quelque chose d'autre soit cliquable - par ex. une image - alors vous devriez re-style un bouton. 2. Si le clic n'est pas sur le contrôle X, le contrôle X ne sera pas notifié - le contrôle Y (celui que vous avez réellement * fait * cliquer) obtient l'événement. –

Répondre

1

vous pouvez utiliser this code pour trouver tous les contrôles ou le type de cible de l'élément visuel sur la fenêtre et le manipuler est des événements de souris.

0

Vous pouvez cocher IsMouseOver pour false, et si vous voulez ajouter une action lorsque IsMouseOver == false, vous pouvez remplacer les métadonnées de ce dp.

0

Vous pouvez appeler CaptureMouse et cet objet recevra tous les événements de la souris. Vous pouvez ensuite déterminer à partir du point de la souris si elle était dans les limites de votre contrôle ou non. Ou vous pouvez écouter l'événement LostMouseCapture à la place.

0

Cela ne fonctionnera pas pour l'événement Click (car il n'y a pas de version à effet tunnel, seule une version bouillonnante), mais vous pouvez gérer la déroute PreviewMouseLeftButtonDown la classe Window et vérifiez si le contrôle cible est dans le coup arbre.