【问题标题】:Windows Phone 7 - Bing Maps MVVM Pushpin initializationWindows Phone 7 - 必应地图 MVVM 图钉初始化
【发布时间】:2011-02-15 20:17:39
【问题描述】:

关于如何在 Bing 地图控件上初始化图钉,有人有很好的指导吗? 我目前的情况有效,但不是 100% 正确......让我解释一下细节:

当我打开带有 Bing 地图控件的页面时,我希望用户能够按下一个小按钮来显示他的当前位置。 为了显示当前位置,我使用了图钉。我已经在 XAML 文件中的控件上添加了 Pushpin,如下所示:

<map:Pushpin> x:Name="currentLocation" Location="{Binding CurrentLocation}" Content="Me" ManipulationStarted="CurrentLocationPin_ManipulationStarted" </map:Pushpin>

现在这种情况存在一些问题! 一、图钉始终可见!那么我该怎么做呢? (我知道我也可以将 Visibility 绑定到属性并使用 bool 到可见性转换器,但这是最好的方法吗?) 其次,现在我没有在视图模型中初始化 Location ......但出于语义原因,我希望将默认值初始化为 Geocoordinate.Unkown (这样我可以在用户尝试进行某些操作时使用它来进行检查在设置当前位置之前)。但是,当我在启动时初始化图钉时,出现以下错误:“UIElement.Arrange(finalRect) 不能在 finalRect 中使用 Infinite 或 NaN 值调用。”。所以我的问题又来了:) 设置当前位置图钉的好指南是什么? (但请注意,用户必须在设置当前位置之前按下一个小的应用程序栏按钮)

【问题讨论】:

  • 这真的是你的 XAML 吗?它看起来无效。
  • XAML 是:&lt;map:Pushpin x:Name="currentLocation" Location="{Binding CurrentLocation}" Visibility="{Binding CurrentLocationVisible}" Background="#003D76" Content="Me" &gt;&lt;/map:Pushpin&gt;

标签: mvvm windows-phone-7


【解决方案1】:

初始化问题是由于Pushpin 的可见性造成的。如果Pushpin的初始可见性是Collapsed,那么它就不会参与排列通道,所以不会报错。

如果您使用视图模型来支持此视图,那么我认为从视图模型中公开一个属性来确定Pushpin 是否应该可见是没有问题的。是的,您可以使用布尔到可见性转换器,但您可以通过实际公开 Visibility 属性(这是我使用的方法)来节省一些处理。

如果您使用命令从按钮按下开始显示 PushpinSilverlight Windows Phone Toolkit 具有启用将应用程序栏按钮连接到命令的行为)。

【讨论】:

  • 使用可见性属性设置图钉可见或不可见的提示效果很好:),但即使将图钉设置为 Visibility.Collapsed (使用此属性),如果我尝试,我仍然会收到错误消息将图钉初始化为 Geocoordinate.Unknow!
  • 嗯,真可惜。在这种情况下,您可以将支持字段初始化为 GeoCoordinate.Unknown,但在属性 getter 中返回一个有效坐标。那应该可以。
  • 好吧,这不是我要找的...所以也许我会关闭图钉并仅在用户单击“定位我”按钮时添加它...
猜你喜欢
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多