WPF Получить элемент (ы) под мышью - PullRequest
32 голосов
/ 05 сентября 2008

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

Ответы [ 3 ]

41 голосов
/ 06 сентября 2008

Вы также можете попробовать использовать свойство Mouse.DirectlyOver, чтобы получить самый верхний элемент, находящийся под мышью.

37 голосов
/ 08 октября 2008

Из " 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.

3 голосов
/ 05 сентября 2008
...