在Windows Phone地图控件上禁用平移和缩放事件

时间:2011-11-27 04:26:39

标签: c# silverlight windows-phone-7

我正在开发适用于Windows Phone的应用程序。

我的想法是在全景控制上显示地图 - 使用选定的图钉 - 按下时,会将用户带到更大版本的地图。

然而,看了之后,我找不到一种方法来禁用地图控件中的缩放,平移和轻弹事件。由于这个地图只是一个预览,我不希望能像地图一样实际使用它(但是因为我想要有图钉,所以它仍然需要是地图)。

有没有办法在地图控件上禁用手势事件?或者有更好的方法来做我想要的事情吗?

感谢。

4 个答案:

答案 0 :(得分:3)

我最近看过为WP7浏览器解决这个问题。我的解决方案是深入研究可视化树,捕获操作事件并取消它们:

http://www.scottlogic.co.uk/blog/colin/2011/11/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control/

然而,对于Map控件,我怀疑有一个更简单的解决方案。尝试在地图顶部放置透明元素,然后使用它来捕获操纵事件。

答案 1 :(得分:1)

尝试在不透明度= 0的地图上定位非透明元素,这对我有用:

<Grid>
    <maps:Map x:Name="Map" Height="200" />
    <Grid Height="200" Background="Black" Opacity="0" Tap="MapGrid_OnTap">
        <!--background is black to disable map pan & zoom, if backround is transparent, map still can capture gestures-->
    </Grid>
</Grid>

答案 2 :(得分:0)

这对我在Windows Phone上有用,可以禁用平移。

将MapPan的事件处理程序添加到Map Control,然后在处理程序中设置要处理的事件。

private void mapControl_MapPan( object sender, MapDragEventArgs e )
{
  e.Handled = true;
}

这将阻止地图控件平移。对缩放应该一样。

答案 3 :(得分:0)

void MapControl_MapZoom(object sender, MapZoomEventArgs e)
{
    e.Handled = true;
}

这将阻止地图控件通过手势进行缩放,但地图仍可通过地图缩放级别栏进行缩放。因此,这可以实现地图控件的整体缩放级别。