1: public class MouseEventArgsHandler
2: {
3: #region LastMouseEventArgs
4:
5: /// <summary>
6: /// LastMouseEventArgs Attached Dependency Property
7: /// </summary>
8: public static readonly DependencyProperty LastMouseEventArgsProperty =
9: DependencyProperty.RegisterAttached("LastMouseEventArgs", typeof(MouseButtonEventArgs), typeof(MouseEventArgsHandler),
10: new FrameworkPropertyMetadata((MouseButtonEventArgs)null));
11:
12: /// <summary>
13: /// Gets the LastMouseEventArgs property. This dependency property
14: /// indicates ....
15: /// </summary>
16: public static MouseButtonEventArgs GetLastMouseEventArgs(DependencyObject d)
17: {
18: return (MouseButtonEventArgs)d.GetValue(LastMouseEventArgsProperty);
19: }
20:
21: /// <summary>
22: /// Sets the LastMouseEventArgs property. This dependency property
23: /// indicates ....
24: /// </summary>
25: public static void SetLastMouseEventArgs(DependencyObject d, MouseButtonEventArgs value)
26: {
27: d.SetValue(LastMouseEventArgsProperty, value);
28: }
29:
30: #endregion
31:
32: #region HandleMouseDoubleClick
33:
34: /// <summary>
35: /// HandleMouseDoubleClick Attached Dependency Property
36: /// </summary>
37: public static readonly DependencyProperty HandleMouseDoubleClickProperty =
38: DependencyProperty.RegisterAttached("HandleMouseDoubleClick", typeof(bool), typeof(MouseEventArgsHandler),
39: new FrameworkPropertyMetadata((bool)false,
40: new PropertyChangedCallback(OnHandleMouseDoubleClickChanged)));
41:
42: /// <summary>
43: /// Gets the HandleMouseDoubleClick property. This dependency property
44: /// indicates ....
45: /// </summary>
46: public static bool GetHandleMouseDoubleClick(DependencyObject d)
47: {
48: return (bool)d.GetValue(HandleMouseDoubleClickProperty);
49: }
50:
51: /// <summary>
52: /// Sets the HandleMouseDoubleClick property. This dependency property
53: /// indicates ....
54: /// </summary>
55: public static void SetHandleMouseDoubleClick(DependencyObject d, bool value)
56: {
57: d.SetValue(HandleMouseDoubleClickProperty, value);
58: }
59:
60: /// <summary>
61: /// Handles changes to the HandleMouseDoubleClick property.
62: /// </summary>
63: private static void OnHandleMouseDoubleClickChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
64: {
65: Control control = d as Control;
66: if (control != null)
67: {
68: if ((bool)e.NewValue)
69: control.MouseDoubleClick += ControlMouseDoubleClick;
70: else
71: control.MouseDoubleClick -= ControlMouseDoubleClick;
72: }
73: }
74:
75: static void ControlMouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
76: {
77: SetLastMouseEventArgs((DependencyObject)sender, e);
78: }
79:
80: #endregion
81: }