Вопрос

Есть ли способ с помощью WPF получить массив элементов под курсором мыши в событии MouseMove?

Это было полезно?

Решение

От "WPF развязан", стр. 383:

Визуальное тестирование может сообщить вам о все VisualS, которые пересекают местоположение, [...] вы должны использовать [... [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, чтобы получить самый верхний элемент, находящийся под курсором мыши.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top