伙计们,我真的需要你们的帮助,我有一张 map
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>
当我从地理观察器获得坐标时,或者当我点击 map 时,我想将这些坐标添加到我的图钉中。
m_PushPin.GeoCoordinate = m_watcher.Position.Location;
m_PushPin 发生“System.NullReferenceException”类型的异常,我无法理解为什么此 PushPin 为空。你能告诉我我做错了什么吗?我该如何解决这个问题?
最佳答案
这是 XAML 解析器的一个已知问题。由于您的 PushPin 嵌套在附加依赖项属性 (MapExtensions.Children) 中,因此它不会成为与 UserControl 相同的逻辑树的一部分,因此不会被该范围内的 FindName 拾取。
相反,您应该手动遍历可视化树并获取所需的控件。幸运的是, map 控件附带了专门针对这种情况的辅助方法。
var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin");
关于windows-phone-7 - 将地理坐标分配给图钉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881000/