一段时间以来,我一直在尝试弄清楚如何做到这一点,但似乎一无所获。我想在用户开始滚动时停止计时器并在用户停止时启动它。我尝试过使用 Manipulation 事件,但这些事件似乎根本没有触发。有谁知道我需要关注哪些事件,或者是否有更好的方法来解决这个问题?
谢谢。
一段时间以来,我一直在尝试弄清楚如何做到这一点,但似乎一无所获。我想在用户开始滚动时停止计时器并在用户停止时启动它。我尝试过使用 Manipulation 事件,但这些事件似乎根本没有触发。有谁知道我需要关注哪些事件,或者是否有更好的方法来解决这个问题?
谢谢。
事件不会在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;
}
}
}
另请注意,由于您有相对于地图的坐标,因此您可以检查用户是否在地图区域内触摸了屏幕(相对坐标和地图尺寸)。