2015-11-09 3 views
0

Я хочу установить кнопку на MapControl в моем приложении WP 8.1. Проблема заключается в том, что кнопка не находится на месте элемента только в левом верхнем углу карты, и она перемещается. Место в привязке - Geopoint. Вот мой код:Windows Phone 8.1 Установка WinRT Расположение кнопки на MapControl

<Maps:MapControl x:Name="MapEvent" Grid.Row="1"> 

     <Maps:MapItemsControl ItemsSource="{Binding}"> 
      <Maps:MapItemsControl.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <Button Maps:MapControl.Location="{Binding Location}" 
           Maps:MapControl.NormalizedAnchorPoint="0.5,0.5" 
    Content="{Binding Name}"/> 
        </StackPanel> 
       </DataTemplate> 
      </Maps:MapItemsControl.ItemTemplate> 
     </Maps:MapItemsControl> 

    </Maps:MapControl> 
+0

1) У вас есть одна кнопка, или много кнопок = 1 кнопку на DataItem? У вас есть приложение WinRT WP 8.1 или приложение Silverlight WP8.1. Другими словами, вы используете Windows.UI.Xaml.Maps.MapControl или Microsoft.Phone.Maps.Controls.Map? –

+0

@EmmanuelDURIN У меня много кнопок в Observablecollection. Появляются работы и кнопки, но они не находятся на своих позициях на карте. Я использую Windows.UI.Xaml.Controls.Maps.MapControl и WinRT. – Quiet

ответ

0

Вот отрывок из какой-то код работает для меня:

public class PhotoInfo 
{ 
    public String Label { get; set; } 
    public String FileName { get; set; } 
    public Geocoordinate Coordinate { get; set; } 
    public Point NormalizedAnchorPoint { get { return new Point(0.5, 1); } } 
} 

Я просто напомнил, что не следует связывать с Windows.Devices.Geolocation.Geocoordinate но Windows.Devices.Geolocation.Geopoint.

Поэтому связывание m:MapControl.Location на Coordinate.Point

<m:MapControl ZoomLevel="{Binding ZoomLevel}" Center="{Binding Center}" MapServiceToken="xxx"> 
    <m:MapItemsControl ItemsSource="{Binding PhotoInfos}"> 
     <m:MapItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Image m:MapControl.Location="{Binding Coordinate.Point}" 
             Source="ms-appx:///Assets/pushpin.png" 
           m:MapControl.NormalizedAnchorPoint="{Binding NormalizedAnchorPoint}" Width="20" Height="45" Tapped="Image_Tapped"/> 
      </DataTemplate> 
     </m:MapItemsControl.ItemTemplate> 
    </m:MapItemsControl> 
</m:MapControl> 
+0

Простите, я плохо объяснил. Эти кнопки представляют объекты в Observablecollection на карте. У каждого объекта есть местоположение, которое установлено на карте. Результат этого кода - это кнопки на карте. У них есть имена контента, но они не находятся на их месте, и они «зависают» на карте. Местоположение не является нулевым и т. Д. – Quiet

+0

Я должен быть уверен, что ObservableCollection является DataContext вашего MapControl. Но было бы лучше, если бы Collection была свойством объекта, который находится в ViewModel. Это свойство будет называться «Locations», и вы напишете

+0

, поэтому в моей модели просмотра у меня есть ObservableCollection. Я создаю статический объект vm в App.xaml.cs. В режиме просмотра в onNavigatedTo я загружаю данные из json в Observablecollection, и у меня есть: this.DataContext = "my_OC"; – Quiet

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