WPF Получить элемент (ы) под мышью
Есть ли способ с WPF получить массив элементов под мышью при событии MouseMove?
3 ответа
Из " WPF Unleashed", стр. 383:
Визуальное тестирование хитов может проинформировать вас обо всех
Visual
Если вы пересекаете место, [...] вы должны использовать [...][VisualTreeHelper.]HitTest
метод, который принимаетHitTestResultCallback
делегировать. До этой версииHitTest
возвращается, делегат вызывается один раз для каждого соответствующегоVisual
начиная с самого верхнего и заканчивая самым нижним.
Подпись такого обратного вызова
HitTestResultBehavior Callback(HitTestResult result)
и он должен вернуться HitTestResultBehaviour.Continue
чтобы получить дополнительные хиты, как показано ниже (со связанной страницы в 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;
}
Для получения дополнительной информации, пожалуйста, обратитесь к документации MSDN дляVisualTreeHelper.HitTest
,
Вы также можете попробовать использовать свойство Mouse.DirectlyOver, чтобы получить самый верхний элемент, который находится под мышью.
Можете ли вы использовать VisualTreeHelper.HitTest?
http://lukieb.blogspot.com/2008/07/visualtreehelperhittest.html