Frage

Gibt es mit WPF eine Möglichkeit, bei einem MouseMove-Ereignis ein Array von Elementen unter die Maus zu bekommen?

War es hilfreich?

Lösung

Aus "WPF entfesselt", Seite 383:

Visuelle Testen von Hit können Sie darüber informieren alle Visuals, die einen Ort schneiden, [...] Sie müssen [...] die verwenden [VisualTreeHelper.]HitTest Methode, die a akzeptiert HitTestResultCallback delegieren.Vor dieser Version von HitTest Rückgaben wird der Delegierte für jede relevante einmal aufgerufen Visual, von oben und endet am Bottommost.

Die Signatur eines solchen Rückrufs ist

HitTestResultBehavior Callback(HitTestResult result)

und es muss zurückkehren HitTestResultBehaviour.Continue um weitere Treffer zu erhalten, wie unten gezeigt (von der verlinkten Seite auf 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;
}

Weitere Informationen finden Sie im MSDN-Dokumentation für VisualTreeHelper.HitTest.

Andere Tipps

Sie können auch versuchen, die Mouse.DirectlyOver-Eigenschaft zu verwenden, um das oberste Element abzurufen, das sich unter der Maus befindet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top