伙计们我真的需要你的帮助,我有一张地图
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
xmlns:maptk="clr-namespace:Microsoft.Phone.Maps.Toolkitassembly=Microsoft.Phone.Controls.Toolkit"
<maps:Map Grid.Row="0" Tap="Onm_MapControlTap" Name="m_MapControl
<maptk:MapExtensions.Children>
<maptk:Pushpin x:Name="m_PushPin" Tap="OnPushPinTap">
<maptk:Pushpin.Content>
<StackPanel>
<TextBlock Text=""/>
<Image Source=""/>
</StackPanel>
</maptk:Pushpin.Content>
</maptk:Pushpin>
</maptk:MapExtensions.Children>
</maps:Map>
当我有来自geowatcher的坐标时,或者当我点击地图时,我想将这些坐标添加到我的图钉中。
m_PushPin.GeoCoordinate = m_watcher.Position.Location;
m_PushPin发生了'System.NullReferenceException'类型的异常,我无法理解为什么这个PushPin为空。你能告诉我我做错了什么,我该如何解决这个问题?
答案 0 :(得分:3)
这是XAML Parser的一个已知问题。由于PushPin嵌套在附加依赖项属性(MapExtensions.Children)中,因此它不会与UserControl属于同一逻辑树,因此不会被该范围内的FindName拾取。
相反,您应该手动遍历可视树并获得所需的控件。幸运的是,地图控件只为这种场合提供了辅助方法。
var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin");
答案 1 :(得分:1)
作为替代方案,您可以使用绑定将一些GeoCoordinate
绑定到您的图钉。