【问题标题】:Hide info box when pointer clicked outside当指针在外部单击时隐藏信息框
【发布时间】:2014-01-27 18:40:28
【问题描述】:

当我单击 bing 地图上的图钉时,我会显示 Custom InfoBox,因为 Windows 应用商店 SDK 中没有内置图钉。它显示得很好,但是当用户在框外单击时,我想隐藏/关闭它,就像您在 Windows 8 中的本机 bing 地图应用程序上看到的那样。

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

第一次单击图钉时,我可能会使用一次性布尔值,但这似乎是一种丑陋的做法,有什么更好的方法来完成我想要的?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为解决此问题的最佳方法是使用如下所示的 Attached Flyout(我不确定您是否使用的是 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%)

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-07-17
        • 2011-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-24
        • 2013-04-18
        相关资源
        最近更新 更多