Xamarin.Forms.Map показать PIns из команды - PullRequest
0 голосов
/ 10 января 2020
public partial class ClientMap: ContentPage
   {
ClientCoordinateviewModel viewModel= new ClientCoordinateviewModel ();
       Client client;
       public ClientMap(Client selected_client)
       {
           Title = klient.Select_client_name;
           InitializeComponent();
           BindingContext = viewModel;
           client= selected_client;
            map = new Map(MapSpan.FromCenterAndRadius(new Position(37, -122), Distance.FromMiles(10)));

           //Just a test pin
           var pin = new Pin()
           {
               Position = new Position(37, -122),
               Label = "Some Pin!"
           };
           map.Pins.Add(pin);
           Content = map;


       }
       protected override void OnAppearing()
       {
           base.OnAppearing();
           if (viewModel.CoordinateParnertPins.Count == 0)
           {
               viewModel.CommandGetCoordinatePins.Execute(client);

           }
       }
}

Я пытаюсь использовать шаблон MVVM. Когда команда выполняется, я получаю список пинов. У меня вопрос, как добавить булавки на карту? Если определить в конструкторе ClientMap (), список выводов будет пустым. Есть предложения?

1 Ответ

0 голосов
/ 10 января 2020

в ViewModel

вызовите следующий код после получения списка выводов

 MessagingCenter.Send<Object, List<Position>>(this, "addPins", PinList); // PinList is type of List<Position>

на странице содержимого

public ClientMap(Client selected_client)
{
   //...
   map = new Map(MapSpan.FromCenterAndRadius(new Position(37, -122), Distance.FromMiles(10)));

   MessagingCenter.Subscribe<Object, List<Position>>(this, "addPins", (args,list) => {

     foreach(Position position in list)
     {
       map.Pins.Add(position);
     }
   });
  Content = map;
}


...