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

C# 指针单击外部时隐藏信息框,c#,windows-runtime,windows-store-apps,bing-maps,C#,Windows Runtime,Windows Store Apps,Bing Maps,当我点击bing地图上的图钉时,我会显示一个自定义信息框,因为windows应用商店SDK中没有内置信息框。它显示的很好,但是当用户在框外单击时,我想隐藏/关闭它,就像你在Windows8的原生bing地图应用程序中看到的那样 我尝试在地图本身上设置一个点击回调,但问题是,即使单击图钉以显示信息框,也总是会被调用 当第一次点击图钉时,我可能会使用一次性布尔值,但这似乎是一种丑陋的方式,实现我想要的更好的方式是什么?我认为解决这个问题的最佳方式是使用下面所附的弹出按钮,我不确定您是否使用Windo

当我点击bing地图上的图钉时,我会显示一个自定义信息框,因为windows应用商店SDK中没有内置信息框。它显示的很好,但是当用户在框外单击时,我想隐藏/关闭它,就像你在Windows8的原生bing地图应用程序中看到的那样

我尝试在地图本身上设置一个点击回调,但问题是,即使单击图钉以显示信息框,也总是会被调用


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

我认为解决这个问题的最佳方式是使用下面所附的弹出按钮,我不确定您是否使用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>
因为弹出按钮是自动发光的,所以您不必再担心信息盒的关闭

只需将网格替换为背景红色,然后使用自定义信息框和good to go即可。可能需要一些调整才能100%实现


希望这有帮助。

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

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