WPF Ottieni gli elementi sotto il mouse
-
09-06-2019 - |
Domanda
Esiste un modo con WPF per ottenere una serie di elementi sotto il mouse su un evento MouseMove?
Soluzione
Da "WPF scatenato", pagina 383:
I test di successo visivo possono informarti Tutto
Visual
s che interseca una posizione, [...] devi usare [...] il[VisualTreeHelper.]HitTest
metodo che accetta aHitTestResultCallback
delegare.Prima di questa versione diHitTest
restituzioni, il delegato viene invocato una volta per ciascun rilevanteVisual
, a partire dal più in alto e finendo al bottomost.
La firma di tale richiamata è
HitTestResultBehavior Callback(HitTestResult result)
e deve ritornare HitTestResultBehaviour.Continue
per ricevere ulteriori hit, come mostrato di seguito (dalla pagina collegata su MSDN):
// Return the result of the hit test to the callback.
public HitTestResultBehavior MyHitTestResult(HitTestResult result)
{
// Add the hit test result to the list that will be processed after the enumeration.
hitResultsList.Add(result.VisualHit);
// Set the behavior to return visuals at all z-order levels.
return HitTestResultBehavior.Continue;
}
Per ulteriori informazioni consultare il Documentazione MSDN per VisualTreeHelper.HitTest
.
Altri suggerimenti
Puoi anche provare a utilizzare la proprietà Mouse.DirectlyOver per ottenere l'elemento più in alto sotto il mouse.