3

一段时间以来,我一直在尝试弄清楚如何做到这一点,但似乎一无所获。我想在用户开始滚动时停止计时器并在用户停止时启动它。我尝试过使用 Manipulation 事件,但这些事件似乎根本没有触发。有谁知道我需要关注哪些事件,或者是否有更好的方法来解决这个问题?

谢谢。

4

1 回答 1

2

事件不会在Map拦截它们时被触发(类似的情况将与 Pivot 控件一起使用)。如果您想在用户触摸屏幕并执行 FreeDrag 手势时收到通知,您可以使用Touch.FrameReported事件和TouchPanel

public MainPage()
{
    InitializeComponent();
    TouchPanel.EnabledGestures = GestureType.FreeDrag;
    Touch.FrameReported += Touch_FrameReported;
}

private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
    if (TouchPanel.IsGestureAvailable) // check only dragging 
    {
        // get point relative to Viewport
        TouchPoint mainTouch = e.GetPrimaryTouchPoint(yourMap);
        // drag started Key - down
        if (mainTouch.Action == TouchAction.Down)
           timer.Stop();

        // check if drag has completed (key up)
        if (mainTouch.Action == TouchAction.Up)
        {
            timer.Start();
            // in both cases you can use some other Properties of TouchPoint
            // do something for example dependant on coordinates 
            // double x = mainTouch.Position.X;
            // double y = mainTouch.Position.Y;
        }
    }
}

另请注意,由于您有相对于地图的坐标,因此您可以检查用户是否在地图区域内触摸了屏幕(相对坐标和地图尺寸)。

于 2014-05-07T12:48:15.373 回答