Windows Phone 8地图控件何时开始和停止滚动时触发哪些事件?

3
我一直在试图解决这个问题,但好像一直没有进展。我想要在用户开始滚动时停止计时器,在用户停止滚动时重新启动计时器。我尝试使用Manipulation事件,但似乎根本不会触发。是否有人知道我需要连接的事件,或者是否有更好的方法解决这个问题?
谢谢。
1个回答

2
事件不会被触发,因为Map(类似的情况也会出现在Pivot控件中)拦截了它们。如果您想在用户触摸屏幕并执行例如FreeDrag手势时得到通知,可以使用Touch.FrameReported事件和TouchPanel。请参考以下链接:Touch.FrameReportedTouchPanel
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;
        }
    }
}

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

谢谢,这正是我所寻找的。 - CAMOBAP
@CAMOBAP 您好。这种方法提供了相当不错的可能性,因为它是“独立于UI控件”的。尽管有时需要进行一些“调整”。 - Romasz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接