Примечание: Я нашел решение своей проблемы, поэтому я публикую его в справочных целях, хотя я был бы рад получить лучшее решение.
Япытаясь обеспечить функциональность двойной щелчок в DataGrid Silverlight, подключив 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, что не то, что я ожидал изначально.С большим размышлением я вижу, что поведение щелчка управляет всеми видами вещей (выберите элемент, поле редактирования и т. Д.), Поэтому, возможно, реализация имеет смысл.