Примечание: Я нашел решение моей проблемы, поэтому размещаю это для справки, хотя я был бы рад получить образование с лучшим решением.Silverlight DataGrid MouseLeftButtonDown событие не отображается при нажатии на строки
Я пытаюсь обеспечить двойную функциональность нажмите на Silverlight DataGrid, зацепив в UIElement.MouseLeftButtonDown но когда я подписаться на DataGrid.MouseLeftButtonDown с помощью XAML или синтаксис DataGrid.MouseLeftButtonDown +=
, мой обработчик не вызывается, когда я нажимаю на строки в DataGrid. Если я нажму на заголовок, событие будет поднято.
Если я подписываюсь на то же событие у родителя UserControl уровня, обработчик события вызывается успешно, как можно было бы ожидать на основе Silverlight RoutedEvents, но тогда я должен обнаружить, произошло ли щелчок на DataGrid или где-нибудь еще.
Если я подписываюсь на мероприятие, используя этот синтаксис UIElement.AddHandler, как показано ниже, он работает как ожидается на основе параметра handledEventsToo: true.
dataGrid.AddHandler(UIElement.MouseLeftButtonDownEvent,
new MouseButtonEventHandler(dataGrid_MouseLeftButtonDown)
, handledEventsToo: true);
Представляется, что реализация DataGrid отмечает эти события как обработанные, предотвращение пузырения событий, по умолчанию в одном из дочернего UiElements, который не то, что я изначально ожидал. С большим размышлением я вижу, что поведение кликов приводит в движение всевозможные вещи (выберите элемент, поле редактирования и т. Д.), Поэтому, возможно, реализация имеет смысл.