Manipulation_started在地图上不起作用

时间:2014-02-03 09:21:14

标签: events windows-phone-8 map

大家好我正试图为地图的ManipulationStarted,ManipulationDelta,ManipulationCompleted设置一个监听器,以检测用户是否拖动地图,但看起来如果拖动地图则不会启动这些事件。如果我为地图设置了一个点击监听器,则会正确启动ManipulationStarted 我做错了什么?

xaml代码:

<Controls:Map x:Name="myMap" 
                      Grid.Row="0"
                      Loaded="myMap_Loaded"
                      ManipulationDelta="myMap_ManipulationDelta"
                      ManipulationCompleted="myMap_ManipulationCompleted"
                      ManipulationStarted="myMap_ManipulationStarted"
                      Tap="myMap_Tap">
代码背后的代码:

private void myMap_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
    Debug.WriteLine("Event:: MyMap_manipulationdelta");
}

private void myMap_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
{
    Debug.WriteLine("Event:: MyMap_manipulationcompleted");
}

private void myMap_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
{
    Debug.WriteLine("Event:: MyMap_manipulationstarted");
}

private void myMap_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
    Debug.WriteLine("Event:: MyMap_tap");
}

我在普通页面上,没有转轴或全景。

1 个答案:

答案 0 :(得分:1)

我担心你将无法处理这些事件,因为Map控件拦截了它们。虽然有一个属性UseOptimizedManipulationRouting,但正如我测试的那样 - 在这种情况下它没有多大帮助。

我不知道你想要实现什么,但如果你不需要ManipulationDeltaEventArgs,那么你可以考虑使用不同的事件,例如:MouseEnter,ResolveCompleted和CenterChanged。

如果您需要JustinAngel suggested here,则可以关注these instructions并使用Touch.FrameReported事件。

编辑 - 代码示例

如果我已经正确理解你,你想知道用户何时触摸地图,MouseEnter将不是最佳选择,因为它只能在第一次工作,然后如果鼠标没有离开地图(用户触摸了其他地方) ),它不会再次开火。这里更好的解决方案(按照上面的说明)可以是这样的代码:

public MainPage()
{
   InitializeComponent();

   Touch.FrameReported += Touch_FrameReported;
}

private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
{
   TouchPoint point = e.GetPrimaryTouchPoint(myMap);
   if (point.Action == TouchAction.Move && point.Position.Y > 0)
   {
       MessageBox.Show("User is Moving Finger over the Map!");
   }
}