Есть ли способ поймать MouseLeftButtonDown (или другое событие мыши) на уровне страницы или пользователя, а затем определить, какой дочерний элемент управления был нажат?Обработчик одиночного клика на странице Silverlight
1
A
ответ
2
Да. Настройте свой обработчик на странице или другом корневом пользовательском интерфейсе, а затем используйте следующий метод, чтобы определить, что было нажато в этом обработчике.
List<UIElement> hits = System.Windows.Media.VisualTreeHelper.FindElementsInHostCoordinates(args.GetPosition(null), startFromControl);
Обратите внимание на то, что некоторые элементы управления должны быть «удалены». Одна общая причина не имеет определенного фона. Элементы управления также могут отключать тестирование с помощью свойства UIElement.IsHitTestVisible.
Спасибо, это то, что мне нужно. –
Есть проблема. Например, некоторые элементы управления, например кнопки, перехватывают щелчок перед обработчиком уровня страницы, который помещает гаечный ключ в работу. Похоже, мне все равно придется обрабатывать клики на этих элементах управления. Я надеялся иметь только одного обработчика на странице. –
Да, события щелчков пузыряют дерево. Вы должны использовать иерархию управления, которая учитывала бы эту функцию. –