Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class UIElementExtensions
- {
- public static void HandleAllPreviewMouse(this UIElement uiElement, RoutedEventHandler handler)
- {
- var elementType = uiElement.GetType();
- foreach (var eventInfo in elementType.GetEvents().Where(ei => ei.Name.Contains("PreviewMouse")))
- {
- var specificHandler = Delegate.CreateDelegate(eventInfo.EventHandlerType, handler.Method);
- eventInfo.AddEventHandler(uiElement, specificHandler);
- }
- }
- }
- public MainWindow()
- {
- InitializeComponent();
- var handler = new RoutedEventHandler(delegate(object sender, RoutedEventArgs e)
- {
- Console.WriteLine("Preview event fired");
- // Uncomment if you want to block event propagation
- //e.Handled = true;
- });
- this.LayoutRoot.HandleAllPreviewMouse(handler);
- }
- <Grid PreviewMouseLeftButtonDown="Handler">
- <Button/>
- <TextBox/>
- <TextBlock/>
- <AnotherControl/>
- </Grid>
- private void HookPreviewMouseEvents(MouseButtonEventHandler handler)
- {
- PreviewMouseDown += handler;
- PreviewMouseLeftButtonUp += handler;
- PreviewMouseUp += handler;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement