Windows Phone 8 Map控件启动和停止滚动时会触发哪些事件?

时间:2013-01-30 20:26:54

标签: c# windows-phone-8 windows-phone maps bing-maps

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

感谢。

1 个答案:

答案 0 :(得分: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;
        }
    }
}

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