Is there a way with WPF to get an array of elements under the mouse on a MouseMove event?
From "WPF Unleashed", page 383:
Visual hit testing can inform you about all
Visual
s that intersect a location, [...] you must use [...] the[VisualTreeHelper.]HitTest
method that accepts aHitTestResultCallback
delegate. Before this version ofHitTest
returns, the delegate is invoked once for each relevantVisual
, starting from the topmost and ending at the bottommost.
The signature of such a callback is
HitTestResultBehavior Callback(HitTestResult result)
and it has to return HitTestResultBehaviour.Continue
to receive further hits, as shown below (from the linked page on 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;
}
For further information, please consult the MSDN documentation for VisualTreeHelper.HitTest
.
You can also try using the Mouse.DirectlyOver property to get the top-most element that is under the mouse.
Mouse.Capture(...)
and Mouse.PreviewMouseDownOutsideCapturedElementEvent
: If an element has mouse capture, the mouse pointer is considered directly over the element regardless of the where the mouse pointer is.
–
Papilloma Mouse.Capture(...)
and Mouse.DirectlyOver
related question - #5399857 –
Papilloma From "WPF Unleashed", page 383:
Visual hit testing can inform you about all
Visual
s that intersect a location, [...] you must use [...] the[VisualTreeHelper.]HitTest
method that accepts aHitTestResultCallback
delegate. Before this version ofHitTest
returns, the delegate is invoked once for each relevantVisual
, starting from the topmost and ending at the bottommost.
The signature of such a callback is
HitTestResultBehavior Callback(HitTestResult result)
and it has to return HitTestResultBehaviour.Continue
to receive further hits, as shown below (from the linked page on 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;
}
For further information, please consult the MSDN documentation for VisualTreeHelper.HitTest
.
Can you use the VisualTreeHelper.HitTest ?
http://lukieb.blogspot.com/2008/07/visualtreehelperhittest.html
© 2022 - 2024 — McMap. All rights reserved.