/// <summary>
        /// On pointer Moved
        /// </summary>
        /// <param name="updateArgs"></param>
        internal void OnMoved(XCoreWetStrokeUpdateEventArgs updateArgs)
        {
            WetStrokeContinuing?.Invoke(this, updateArgs);

            if (updateArgs.Disposition == XCoreWetStrokeDisposition.Completed)
            {
                WetStrokeCompleted?.Invoke(this, updateArgs);
            }
        }
        /// <summary>
        /// On pointer released
        /// </summary>
        /// <param name="updateArgs"></param>
        internal void OnReleased(XCoreWetStrokeUpdateEventArgs updateArgs)
        {
            WetStrokeStopping?.Invoke(this, updateArgs);

            if (updateArgs.Disposition == XCoreWetStrokeDisposition.Canceled)
            {
                return;
            }

            WetStrokeCompleted?.Invoke(this, updateArgs);
        }
 /// <summary>
 /// Invoke the WetStrokeCompleted event
 /// </summary>
 /// <param name="updateArgs">the update arguments</param>
 protected void InvokeWetStrokeCompleted(XCoreWetStrokeUpdateEventArgs updateArgs)
 {
     WetStrokeCompleted?.Invoke(this, updateArgs);
 }