private static void HandleDoubleClick(object sender, MouseButtonEventArgs e) { if (e.ClickCount == 2) { Control ctrl = (Control)sender; MouseButtonEventArgs doubleClick = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton, e.StylusDevice); if ((e.RoutedEvent == UIElement.PreviewMouseLeftButtonDownEvent) || (e.RoutedEvent == UIElement.PreviewMouseRightButtonDownEvent)) { doubleClick.RoutedEvent = PreviewMouseDoubleClickEvent; doubleClick.Source = e.OriginalSource; // Set OriginalSource because initially is null doubleClick.OverrideSource(e.Source); ctrl.OnPreviewMouseDoubleClick(doubleClick); } else { doubleClick.RoutedEvent = MouseDoubleClickEvent; doubleClick.Source = e.OriginalSource; // Set OriginalSource because initially is null doubleClick.OverrideSource(e.Source); ctrl.OnMouseDoubleClick(doubleClick); } // If MouseDoubleClick event is handled - we delegate the state to original MouseButtonEventArgs if (doubleClick.Handled) e.Handled = true; } }
private static void HandleDoubleClick(object sender, MouseButtonEventArgs e) { if (e.ClickCount != 2) return; Control control = (Control) sender; MouseButtonEventArgs e1 = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, e.ChangedButton, e.StylusDevice); if (e.RoutedEvent == UIElement.PreviewMouseLeftButtonDownEvent || e.RoutedEvent == UIElement.PreviewMouseRightButtonDownEvent) { e1.RoutedEvent = Control.PreviewMouseDoubleClickEvent; e1.Source = e.OriginalSource; e1.OverrideSource(e.Source); control.OnPreviewMouseDoubleClick(e1); } else { e1.RoutedEvent = Control.MouseDoubleClickEvent; e1.Source = e.OriginalSource; e1.OverrideSource(e.Source); control.OnMouseDoubleClick(e1); } if (!e1.Handled) return; e.Handled = true; }