指针在外部单击时隐藏信息框

时间:2014-01-27 18:40:29

标签: c# windows-runtime windows-store-apps bing-maps

当我点击bing地图上的图钉时,我显示Custom InfoBox,因为Windows应用商店SDK中没有内置。它显示正常,但当用户在框外点击时,我想隐藏/关闭它,就像你在Windows 8中的原生bing地图应用程序上看到的那样。

我尝试在地图上设置Tapped回调,但问题是即使点击图钉显示信息框也会一直调用。

当第一次点击图钉时,我可能会使用一次布尔值,但这似乎是一种丑陋的方式,实现我想要的更好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我认为解决此问题的最佳方法是使用下面的附加弹出窗口(我不确定您是否使用的是Windows 8.1,但现在这是我做出的假设)

您可以将附加的弹出按钮添加到图钉中,如下所示:

<maps:Pushpin Height="100" Width="100" Tapped="UIElement_OnTapped">
    <FlyoutBase.AttachedFlyout>
        <Flyout>
            <Grid Width="100" Height="100" Background="Red"></Grid>
        </Flyout>
    </FlyoutBase.AttachedFlyout>
    <maps:MapLayer.Position>
        <maps:Location Latitude="47.610039" Longitude="-122.342207" />
    </maps:MapLayer.Position>
</maps:Pushpin>

在Tapped事件中,您可以添加一些代码来显示弹出按钮:

var element = sender as FrameworkElement;
if (element != null)           {
    FlyoutBase.ShowAttachedFlyout(element);
}

因为弹出窗口是自动LightDismissable,你不必再担心关闭信息框了。

只需使用自定义信息框替换背景为红色的网格即可。 (可能是一些对齐的事情让它100%)

希望这有帮助。

答案 1 :(得分:0)

向地图添加点击/点按的事件。为了防止点击事件冒泡到地图,在图钉集上的点击事件中,事件args处理属性为true。这将使得点击图钉时地图点击甚至不会触发。您也可以向信息框添加类似的点击事件/处理属性,这样如果您点击信息框,它就不会关闭。