Advertisement
Guest User

Untitled

a guest
Apr 16th, 2014
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. public static class UIElementExtensions
  2. {
  3. public static void HandleAllPreviewMouse(this UIElement uiElement, RoutedEventHandler handler)
  4. {
  5. var elementType = uiElement.GetType();
  6.  
  7. foreach (var eventInfo in elementType.GetEvents().Where(ei => ei.Name.Contains("PreviewMouse")))
  8. {
  9. var specificHandler = Delegate.CreateDelegate(eventInfo.EventHandlerType, handler.Method);
  10. eventInfo.AddEventHandler(uiElement, specificHandler);
  11. }
  12. }
  13. }
  14.  
  15. public MainWindow()
  16. {
  17. InitializeComponent();
  18.  
  19. var handler = new RoutedEventHandler(delegate(object sender, RoutedEventArgs e)
  20. {
  21. Console.WriteLine("Preview event fired");
  22.  
  23. // Uncomment if you want to block event propagation
  24. //e.Handled = true;
  25. });
  26.  
  27. this.LayoutRoot.HandleAllPreviewMouse(handler);
  28. }
  29.  
  30. <Grid PreviewMouseLeftButtonDown="Handler">
  31. <Button/>
  32. <TextBox/>
  33. <TextBlock/>
  34. <AnotherControl/>
  35. </Grid>
  36.  
  37. private void HookPreviewMouseEvents(MouseButtonEventHandler handler)
  38. {
  39. PreviewMouseDown += handler;
  40. PreviewMouseLeftButtonUp += handler;
  41. PreviewMouseUp += handler;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement