Domanda

Esiste un modo con WPF per ottenere una serie di elementi sotto il mouse su un evento MouseMove?

È stato utile?

Soluzione

Da "WPF scatenato", pagina 383:

I test di successo visivo possono informarti Tutto Visuals che interseca una posizione, [...] devi usare [...] il [VisualTreeHelper.]HitTest metodo che accetta a HitTestResultCallback delegare.Prima di questa versione di HitTest restituzioni, il delegato viene invocato una volta per ciascun rilevante Visual, 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top