private void OnPointerMoved(object sender, Touch.PointerEventArgs e)
        {
            if (_currentScrollItem != null)
            {
                double dx = e.Position.X - _lastPosition.X;
                double dy = e.Position.Y - _lastPosition.Y;
                if (!_currentScrollItem.HorizontallyScrollable)
                {
                    dx = 0;
                }
                if (!_currentScrollItem.VerticallyScrollable)
                {
                    dy = 0;
                }

                Windows.UI.Xaml.Automation.ScrollAmount h = Windows.UI.Xaml.Automation.ScrollAmount.NoAmount;
                Windows.UI.Xaml.Automation.ScrollAmount v = Windows.UI.Xaml.Automation.ScrollAmount.NoAmount;
                if (dx < 0)
                {
                    h = Windows.UI.Xaml.Automation.ScrollAmount.SmallIncrement;
                }
                else if (dx > 0)
                {
                    h = Windows.UI.Xaml.Automation.ScrollAmount.SmallDecrement;
                }
                if (dy < 0)
                {
                    v = Windows.UI.Xaml.Automation.ScrollAmount.SmallIncrement;
                }
                else if (dy > 0)
                {
                    v = Windows.UI.Xaml.Automation.ScrollAmount.SmallDecrement;
                }
                _currentScrollItem.Scroll(h, v);
            }

            _lastPosition = e.Position;
        }
 private void OnPointerDown(object sender, Touch.PointerEventArgs e)
 {
     _currentScrollItem = FindElementsToInvoke(e.Position);
     _lastPosition      = e.Position;
 }
 private void OnPointerUp(object sender, Touch.PointerEventArgs e)
 {
     _currentScrollItem = null;
 }