我正在开发ios aswel的xamarin项目,我们在Xamarin.Forms地图上显示自定义标记,我们希望用户在点击自定义标记时导航到另一个视图。
我们正在使用Navigation.PushAsync来浏览视图。这是从非平台特定代码的视图模型中完成的,而navigation.PushAsync只能在那里使用,而不能在特定于平台的代码中使用。这是customMapRenderers的位置,以及处理标记的onlclick的位置。
所以我的问题是如何从这些onClick事件导航到另一个视图。 下面是抓住onclick的方法。
Android:
private void OnMarkerClick(object sender, GoogleMap.MarkerClickEventArgs e)
{
Toast.MakeText(MainApplication.Context, "Button Pressed", ToastLength.Long).Show();
}
的iOS:
private void OnDidSelectAnnotationView(object sender, MKAnnotationViewEventArgs e)
{
UIAlertView alert = new UIAlertView()
{
Title = "Event",
Message = "Button Clicked"
};
alert.AddButton("Oke");
alert.Show();
}
答案 0 :(得分:3)
正如Yuri所说,您可以使用Messenger来实现此功能,这里有一个关于如何使用Messenger
的{{3}}。您可以在custom renderer
onClick事件中使用它,当在message
中发送renderer
时,Page
将收到Message
。因此,您可以导航到网页MessagingCenter.Subscribe
方法中的其他视图。
Page:
MessagingCenter.Subscribe<MainPage>(this, "Navigation", async (sender) =>
{
var page1 = new Page1();
await Navigation.PushModalAsync(page1);
});
自定义渲染器:
MessagingCenter.Send<MainPage>(MainPage.getInstance(), "Navigation");