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