Events 操纵';我不在地图上工作

Events 操纵';我不在地图上工作,events,windows-phone-8,map,Events,Windows Phone 8,Map,大家好,我正在尝试为地图的操纵开始、操纵增量、操纵完成设置一个侦听器,以检测用户是否拖动地图,但如果我拖动地图,这些事件似乎都不会启动。如果我为映射操作设置了一个点击侦听器,则启动的操作将正确启动。 我做错了什么 xaml代码: <Controls:Map x:Name="myMap" Grid.Row="0" Loaded="myMap_Loaded" M

大家好,我正在尝试为地图的操纵开始、操纵增量、操纵完成设置一个侦听器,以检测用户是否拖动地图,但如果我拖动地图,这些事件似乎都不会启动。如果我为映射操作设置了一个点击侦听器,则启动的操作将正确启动。
我做错了什么

xaml代码:

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

我在一个普通页面上,没有透视图或全景图。

我担心您将无法处理这些事件,因为地图控制截获了它们。虽然有一个属性,但正如我所测试的,它在这种情况下没有多大帮助。

我不知道你想要达到什么目标,但是如果你不需要操纵DelaTeaGARGS,那么你可能会考虑使用不同的事件,比如:MouseEnter,解决方案和Cchange。 如果您需要它们,那么您可以根据需要使用Touch.FrameReported事件

编辑-代码示例

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

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!");
   }
}

我使用map控件实现了一个简单的导航器,因此当用户的位置改变时,地图将一起移动。我试图检测地图是否已被用户移动,如果是,我想停止地图以跟随用户位置。我想我不能使用CenterChanged(因为它会随着用户位置的变化而变化),我无法理解如何使用UseOptimizedManipulationRouting和ResolveCompleted。我将尝试使用MouseEnter,我忽略了它,因为我认为它仅适用于PC上的SilverLight应用程序。欢迎提供任何进一步的建议:)@jacopograsi如果您想检测用户是否触摸了地图,鼠标输入将不是最佳选择。我添加了一些示例代码,可能会对您有所帮助。事实上,我昨天尝试了MouseEnter,效果非常好,因为用户必须触摸另一个按钮才能重新开始跟随他的位置,如果他触摸按钮,MouseEnter将在用户下次移动地图时启动。但我认为你的解决方案更正确。谢谢:)@jacopograsi不客气。只要记住正确处理这些点。动作和点。位置,特别是这个位置-它取决于你在屏幕上的地图位置。我使用了一个简单的示例,其中我的地图位于屏幕底部。祝你好运
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!");
   }
}