diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.Core/ExtensionMethods')
| -rw-r--r-- | Software/Visual_Studio/Tango.Core/ExtensionMethods/FrameworkElementExtensions.cs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.Core/ExtensionMethods/FrameworkElementExtensions.cs b/Software/Visual_Studio/Tango.Core/ExtensionMethods/FrameworkElementExtensions.cs index 7539deba2..040668f7d 100644 --- a/Software/Visual_Studio/Tango.Core/ExtensionMethods/FrameworkElementExtensions.cs +++ b/Software/Visual_Studio/Tango.Core/ExtensionMethods/FrameworkElementExtensions.cs @@ -435,6 +435,70 @@ public static class FrameworkElementExtensions RegisterForMouseOrTouchMove(element, null, handler); } + /// <summary> + /// Registers for mouse or stylus move. + /// </summary> + /// <param name="element">The element.</param> + /// <param name="relativeTo">The relative to.</param> + /// <param name="handler">The handler.</param> + public static void RegisterForMouseOrStylusMove(this FrameworkElement element, FrameworkElement relativeTo, EventHandler<MouseOrTouchEventArgs> handler) + { + bool _isTouch = false; + + MouseEventHandler mouseHandler = (x, e) => + { + if (!_isTouch) + { + var args = new MouseOrTouchEventArgs() + { + Location = new Point(e.GetPosition(relativeTo != null ? relativeTo : element).X, e.GetPosition(relativeTo != null ? relativeTo : element).Y), + Source = e.Source, + OriginalSource = e.OriginalSource, + Handled = e.Handled, + GetPositionAction = e.GetPosition + }; + + handler(element, args); + e.Handled = args.Handled; + } + }; + + //element.MouseMove += mouseHandler; + element.AddHandler(FrameworkElement.MouseMoveEvent, mouseHandler); + + StylusEventHandler touchHandler = (x, e) => + { + _isTouch = true; + + var args = new MouseOrTouchEventArgs() + { + Location = new Point(e.GetPosition(relativeTo != null ? relativeTo : element).X, e.GetPosition(relativeTo != null ? relativeTo : element).Y), + Source = e.Source, + OriginalSource = e.OriginalSource, + Handled = e.Handled, + GetPositionAction = (s) => { return e.GetPosition(s); }, + StylusDevice = e.StylusDevice, + }; + + handler(element, args); + e.Handled = args.Handled; + }; + + + //element.TouchMove += touchHandler; + element.AddHandler(FrameworkElement.StylusMoveEvent, touchHandler); + } + + /// <summary> + /// Registers for mouse or stylus move. + /// </summary> + /// <param name="element">The element.</param> + /// <param name="handler">The handler.</param> + public static void RegisterForMouseOrStylusMove(this FrameworkElement element, EventHandler<MouseOrTouchEventArgs> handler) + { + RegisterForMouseOrStylusMove(element, null, handler); + } + #endregion #region Loaded |
