2

家伙,我真的需要你的帮助,我有地图分配地理坐标图钉

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;

类型的异常“System.NullReferenceException”发生了m_PushPin,我不明白为什么这个图钉为空。你能告诉我我做错了什么,我该如何解决这个问题?

回答

3

这是XAML Parser的已知问题。由于您的PushPin嵌套在附加的依赖项属性(MapExtensions.Children)中,因此它不会与UserControl处于同一逻辑树的一部分,因此在该范围内不会被FindName拾取。

相反,您应该手动遍历可视树并获得所需的控件。幸运的是,地图控件仅在这种情况下附带了辅助方法。

var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin"); 
+0

这是非常有益的感谢贾斯汀 – 2013-02-15 07:16:38

1

正如你可以使用绑定绑定一些GeoCoordinate到图钉的替代品。