自定义ScrollViewer的Touch事件--触摸上下移动ScrollViewer滚动到指定位置

double mPointY;//触摸点的Y坐标

double mOffsetY;//滚动条当前位置

bool mIsTouch = false;//是否触摸

//触摸事件

private void mScrollViewer_TouchDown(object sender, TouchEventArgs e)

{

    mIsTouch = true;//正在触摸

    mOffsetY = this.mScrollViewer.VerticalOffset;//获取ScrollViewer滚动条当前位置

    TouchPoint point = e.GetTouchPoint(mScrollViewer);//获取相对于ScrollViewer的触摸点位置

    mPointY = point.Position.Y;//触摸点的Y坐标

}



//触摸移动事件

private void mScrollViewer_TouchMove(object sender, TouchEventArgs e)

{

    if (mIsTouch == true)//如果正在触摸

    {

        TouchPoint point = e.GetTouchPoint(mScrollViewer);//获取相对于ScrollViewer的触摸点位置

        double DiffOffset = point.Position.Y - mPointY;//计算相对位置

        this.mScrollViewer.ScrollToVerticalOffset(mOffsetY - DiffOffset);//ScrollViewer滚动到指定位置

    }

}



//触摸结束事件

private void mScrollViewer_TouchUp(object sender, TouchEventArgs e)

{

    mIsTouch = false;//触摸结束

} 

 

你可能感兴趣的:(scrollview)