WPF Получить элементы под мышью
-
09-06-2019 - |
Вопрос
Есть ли способ с помощью WPF получить массив элементов под курсором мыши в событии MouseMove?
Решение
От "WPF развязан", стр. 383:
Визуальное тестирование может сообщить вам о все
Visual
S, которые пересекают местоположение, [...] вы должны использовать [...[VisualTreeHelper.]HitTest
метод, который принимаетHitTestResultCallback
делегат.Перед этой версиейHitTest
Возвращение, делегат вызывается один раз для каждого соответствующегоVisual
, начиная с самого верхнего и заканчиваясь на Bottomomost.
Подпись такого обратного вызова
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