2013-10-02 1 views
1

lorsque j'essaie d'ajouter des marqueurs d'emplacement d'utilisateur à ma carte dans Windows Phone 8 par modèle tous les points apparaissent dans le coin supérieur gauche de la carte. je suis sûr que j'ai différents endroits c'est mon code:Comment ajouter des marqueurs à mapper dans Windowsphone 8 par template?

  <maps:Map x:Name="myMap" Center="{Binding CenterPoint}" ZoomLevel="5"> 
      <toolkit:MapExtensions.Children> 
        <ItemsControl ItemsSource="{Binding AllLocations}"> 
         <ItemsControl.ItemsPanel> 
          <ItemsPanelTemplate> 
           <Grid/> 
          </ItemsPanelTemplate> 
         </ItemsControl.ItemsPanel> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
          <toolkit:MapChildControl> 
           <toolkit:UserLocationMarker Background="Blue" Foreground="Green" GeoCoordinate="{Binding coordinate,Converter={StaticResource GeoCoordinateConverter}}"/> 
          </toolkit:MapChildControl> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 

        </ItemsControl> 
      </toolkit:MapExtensions.Children> 

     </maps:Map> 

Répondre

6

Malheureusement définissant la liaison en XAML ne fonctionne pas. Je ne sais pas pourquoi. - Probablement à faire avec la façon dont le XAML est analysé et construit au moment de l'exécution.

Vous pouvez toutefois définir la liaison dans le code et cela fonctionnera.

Ceci est d'une application de travail:

<map:Map x:Name="TheMap"> 
    <toolkit:MapExtensions.Children> 
     <toolkit:MapItemsControl> 
      <toolkit:MapItemsControl.ItemTemplate> 
       <DataTemplate> 
        <toolkit:Pushpin GeoCoordinate="{Binding Converter={StaticResource PinToGeoCoordinateConverter}}" 
             Content="{Binding Name}" /> 
       </DataTemplate> 
      </toolkit:MapItemsControl.ItemTemplate> 
     </toolkit:MapItemsControl> 
    </toolkit:MapExtensions.Children> 
</map:Map> 

événement Loaded pour la page (en code derrière)

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
{ 
    this.Loaded -= OnLoaded; 

    // Have to set up the ItemSource explicitly - unfortunately this doesn't work if set in XAML :(
    var children = MapExtensions.GetChildren(TheMap); 
    var obj = children.FirstOrDefault(x => x is MapItemsControl) as MapItemsControl; 

    obj.ItemsSource = ViewModel.Pins; 
} 
+0

MapItemsControl ne semble pas être capable de se lier. Votre code derrière définit simplement ItemSource, il ne détecte pas les modifications. J'ai essayé de faire manuellement la liaison à la place, mais MapItemsControl n'hérite pas de FragmentsElement, donc GetBindingExpression() n'est pas disponible. – Thomas

+0

Encore je l'ai résolu en mettant un ObservableCollection et juste en changeant le contenu. – Thomas

Questions connexes