private void MouseUp(object sender, MouseButtonEventArgs e) { if (_isMouseCaptured) { _isMouseCaptured = false; Element.ReleaseMouseCapture(); var isMove = (DateTime.Now - _lastMoveTime).TotalMilliseconds < MOUSE_MOVE_MAX_PERIOD; ScrollStoppedAll(ActiveTouchManagers.Skip(_currentIndex), _absoluteMove, _relativeMove, isMove); } }
public void MouseMove(object sender, MouseEventArgs e) { if (_isMouseCaptured) { var mousePosition = GetMousePosition(e); if (!_isContentCaptured) { // Init AllScrollDirections if (AllScrollDirections == null) { AllScrollDirections = GetTotalScrollDirections(indexFrom: _currentIndex); var nextIndex = ActiveTouchManagers.IndexOf(this) + 1; // No more controls or single direction or I use both directions if (nextIndex >= ActiveTouchManagers.Count || !AllScrollDirections.IsHorizontal || !AllScrollDirections.IsVertical || (ScrollDirections.IsHorizontal && ScrollDirections.IsVertical)) { CaptureAnyContent(mousePosition); // This content return; } } var absoluteMove = mousePosition - MouseDownPosition; if (IsExceededRange(AllScrollDirections, absoluteMove)) // IsExceededRange needs to AllScrollDirections { CaptureAnyContent(mousePosition); // Any content _isDominanceHorizontal = Math.Abs(absoluteMove.X) >= Math.Abs(absoluteMove.Y); return; } return; } _relativeMove = mousePosition - _lastMousePosition; if (_relativeMove.X == 0 && _relativeMove.Y == 0) { return; // Fix bug } _absoluteMove = mousePosition - _startMousePosition; _lastMousePosition = mousePosition; _lastMoveTime = DateTime.Now; ScrollAll(ActiveTouchManagers.Skip(_currentIndex), _absoluteMove, _relativeMove, _isFirst); _isFirst = false; } }