触摸事件拦截和路由

Touch events interception and routing

我有一个 MapControl,我在地图的中心显示了一个 MapIcon,我每秒更新一次并再次居中。这很好用。

但是现在,我试图禁用 MapControl 的所有手势和触摸事件,但没有成功。我最接近完成此操作的是禁用所有四种交互模式,例如 PanInteractionMode。但是如果你尝试用两个手指拖动地图,它仍然被拖动,这是不可接受的。

最重要的是,MapControl 位于 Pivot 控件内,我想将 MapControl 事件路由到 Pivot,这样它也可以检测在地图上滑动手势。

我是不是做梦太多了?

当我将以下四种交互模式设置为Disabled后,我就无法再与地图进行交互了。我正在 Windows 10 创意者更新。

但即使将它们加上 IsHitTestVisible 设置为 FalseMapControl 仍会吞下任何输入。解决方法是覆盖 透明 Rectangle。这样 Pivot 上的滑动将再次起作用。

<PivotItem Header="PivotItem 0">
    <Grid>
        <Maps:MapControl PanInteractionMode="Disabled"
                         RotateInteractionMode="Disabled"
                         TiltInteractionMode="Disabled"
                         ZoomInteractionMode="Disabled"
                         IsHitTestVisible="False" />
        <Rectangle Fill="Transparent" />
    </Grid>
</PivotItem>