WPF Element(e) unter der Maus abrufen
-
09-06-2019 - |
Frage
Gibt es mit WPF eine Möglichkeit, bei einem MouseMove-Ereignis ein Array von Elementen unter die Maus zu bekommen?
Lösung
Aus "WPF entfesselt", Seite 383:
Visuelle Testen von Hit können Sie darüber informieren alle
Visual
s, die einen Ort schneiden, [...] Sie müssen [...] die verwenden[VisualTreeHelper.]HitTest
Methode, die a akzeptiertHitTestResultCallback
delegieren.Vor dieser Version vonHitTest
Rückgaben wird der Delegierte für jede relevante einmal aufgerufenVisual
, 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.
Können Sie das verwenden? VisualTreeHelper.HitTest ?
http://lukieb.blogspot.com/2008/07/visualtreehelperhittest.html