MouseBehaviour.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using PixiEditor.Views;
  2. using System.Diagnostics;
  3. using System.Windows;
  4. using System.Windows.Controls;
  5. using System.Windows.Input;
  6. using Xceed.Wpf.Toolkit.Zoombox;
  7. namespace PixiEditor.Helpers.Behaviours {
  8. public class MouseBehaviour : System.Windows.Interactivity.Behavior<FrameworkElement>
  9. {
  10. public static readonly DependencyProperty MouseYProperty = DependencyProperty.Register(
  11. "MouseY", typeof(double), typeof(MouseBehaviour), new PropertyMetadata(default(double)));
  12. public double MouseY
  13. {
  14. get { return (double)GetValue(MouseYProperty); }
  15. set { SetValue(MouseYProperty, value); }
  16. }
  17. public static readonly DependencyProperty MouseXProperty = DependencyProperty.Register(
  18. "MouseX", typeof(double), typeof(MouseBehaviour), new PropertyMetadata(default(double)));
  19. public double MouseX
  20. {
  21. get { return (double)GetValue(MouseXProperty); }
  22. set { SetValue(MouseXProperty, value); }
  23. }
  24. protected override void OnAttached()
  25. {
  26. AssociatedObject.MouseMove += AssociatedObjectOnMouseMove;
  27. }
  28. private void AssociatedObjectOnMouseMove(object sender, MouseEventArgs mouseEventArgs)
  29. {
  30. var pos = mouseEventArgs.GetPosition(AssociatedObject);
  31. MouseX = pos.X;
  32. MouseY = pos.Y;
  33. }
  34. protected override void OnDetaching()
  35. {
  36. AssociatedObject.MouseMove -= AssociatedObjectOnMouseMove;
  37. }
  38. }
  39. }