J'ai un contrôle Canvas personnalisé (hérité de Canvas) superposé sur une grande partie des contrôles utilisateur. L'idée est de tracer des chemins entre les commandes utilisateur (c'est-à-dire les lignes de connexion).Dans WPF, comment puis-je capturer la souris sur un canevas et trouver les contrôles sur lesquels le curseur se trouve?
Pour capturer le mouvement de la souris, j'appelle le Mouse.Capture(theCanvas)
à MouseDown. Cela fonctionne magnifiquement, mais les contrôles utilisateur sous la toile ne reçoivent évidemment plus d'événements de souris. Mouse.DirectlyOver
montre toujours la toile, donc je ne peux pas vraiment faire semblant en jetant un coup d'œil à la position actuelle et en voyant quel utilisateur contrôle c'est fini.
Alors, je dois encore le canevas pour les chemins de dessin, mais comment puis-je résoudre ce l'une des façons suivantes:
- Peek sous la toile et voir ce que le contrôle est plus élevé juste en dessous?
- Obtenez ce MouseDown -> Track MouseMoves -> flux de travail MouseUp pour travailler sur la toile sans captures de la souris?
D'autres idées bienvenues ...
Quels types d'événements de souris les contrôles du canevas doivent-ils recevoir? –
@Rob, souris haut/bas/déplacement (c.-à-d. Déplacer est utilisé pour déterminer si c'est une cible valide et changer la couleur de ligne en vert, up est utilisé pour déterminer si l'utilisateur veut réellement établir la connexion à ce contrôle, etc.) – Brandon