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, я не могу понять, почему этот PushPin имеет значение NULL. Можете ли вы сказать мне, что я делаю неправильно, и как я могу это исправить?

ответ

3

Это известная проблема с анализатором XAML. Поскольку ваш PushPin вложен в свойство Attached Dependency (MapExtensions.Children), он не будет частью того же логического дерева, что и UserControl, и как таковой не будет получать FindName в этой области.

Вместо этого вы должны вручную пересечь визуальное дерево и получить необходимый вам элемент управления. К счастью, система управления картами поставляется с вспомогательными методами только для этого случая.

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

Это было очень полезно благодаря justin –

1

В качестве альтернативы вы можете использовать привязку, чтобы связать некоторые GeoCoordinate к вашей Pushpin.

Смежные вопросы