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>

当我从地理观察者那里获得坐标时,或者当我点击地图时,我想将这些坐标添加到我的图钉中。

m_PushPin.GeoCoordinate = m_watcher.Position.Location;

m_PushPin 发生“System.NullReferenceException”类型的异常,我无法理解为什么此 PushPin 为空。你能告诉我我做错了什么,我该如何解决这个问题?

4

2 回答 2

3

这是 XAML 解析器的一个已知问题。由于您的 PushPin 嵌套在 Attached Dependency Property (MapExtensions.Children) 中,因此它不会与 UserControl 属于同一逻辑树,因此 FindName 不会在该范围内获取。

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

    var pushpin = MapExtensions.GetChildren(myMap).OfType<Pushpin>().First(p => p.Name == "m_PushPin");
于 2013-02-14T19:09:02.043 回答
1

作为替代方案,您可以使用绑定将一些绑定GeoCoordinate到您的图钉。

于 2013-02-14T20:44:56.973 回答