Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.Forms.Map显示来自命令的管脚_Xamarin_Xamarin.forms_Xamarin.forms.maps - Fatal编程技术网

Xamarin.Forms.Map显示来自命令的管脚

Xamarin.Forms.Map显示来自命令的管脚,xamarin,xamarin.forms,xamarin.forms.maps,Xamarin,Xamarin.forms,Xamarin.forms.maps,我正在尝试使用MVVM模式。当命令执行时,我得到一个管脚列表。我的问题是如何在地图上添加图钉?如果在ClientMap()构造函数中定义,则管脚列表为空。有什么建议吗?在ViewModel中 获取管脚列表后调用以下代码 public partial class ClientMap: ContentPage { ClientCoordinateviewModel viewModel= new ClientCoordinateviewModel (); Client client

我正在尝试使用MVVM模式。当命令执行时,我得到一个管脚列表。我的问题是如何在地图上添加图钉?如果在ClientMap()构造函数中定义,则管脚列表为空。有什么建议吗?

在ViewModel中 获取管脚列表后调用以下代码

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);

           }
       }
}
MessagingCenter.Send(这个“addPins”,PinList);//PinList是列表的类型
在内容页中
publicclientmap(客户端选择的\u客户端)
{
//...
地图=新地图(地图跨度从中心到半径(新位置(37,-122),距离从英里(10));
订阅(此“addPins”,(args,list)=>{
foreach(列表中的位置)
{
图.销.添加(位置);
}
});
内容=地图;
}

获取pin列表时,您可以使用消息中心发送消息。@LucasZhang MSFT我从API获取列表,并且在viewModel.ClietnPinsList中拥有所有pin,但由于请求是异步的,所以不要将pin添加到map@LucasZhang-MSFT第一个代码:``MessagingCenter.Send(这个是“addPins”,PinList);```在添加列表中的所有管脚后,我添加了异步任务函数?是的,您是对的。
 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;
}