单击标记时从 CustomMapRenderer 调用 Naviation.PushAsync
Calling Naviation.PushAsync from CustomMapRenderer when clicked on a marker
我正在为 ios 和 android 开发一个 xamarin 项目,我们在 Xamarin.Forms 地图上显示自定义标记,我们希望用户导航到另一个视图他点击了自定义标记。
我们正在使用 Navigation.PushAsync 浏览视图。这是从非平台特定代码的视图模型完成的,navigation.PushAsync 只能在那里使用,不能从平台特定代码中使用。这是 customMapRenderer 所在的位置,也是处理标记的 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();
}
正如尤里所说,你可以通过使用Messenger, here is a sample实现这一点关于如何使用Messenger
。您可以在 custom renderer
onClick 事件中使用它,当在 renderer
中发送 message
时,Page
将收到 Message
。因此,您可以在主页的 MessagingCenter.Subscribe
方法中导航到另一个视图。
页数:
MessagingCenter.Subscribe<MainPage>(this, "Navigation", async (sender) =>
{
var page1 = new Page1();
await Navigation.PushModalAsync(page1);
});
自定义渲染器:
MessagingCenter.Send<MainPage>(MainPage.getInstance(), "Navigation");
我正在为 ios 和 android 开发一个 xamarin 项目,我们在 Xamarin.Forms 地图上显示自定义标记,我们希望用户导航到另一个视图他点击了自定义标记。
我们正在使用 Navigation.PushAsync 浏览视图。这是从非平台特定代码的视图模型完成的,navigation.PushAsync 只能在那里使用,不能从平台特定代码中使用。这是 customMapRenderer 所在的位置,也是处理标记的 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();
}
正如尤里所说,你可以通过使用Messenger, here is a sample实现这一点关于如何使用Messenger
。您可以在 custom renderer
onClick 事件中使用它,当在 renderer
中发送 message
时,Page
将收到 Message
。因此,您可以在主页的 MessagingCenter.Subscribe
方法中导航到另一个视图。
页数:
MessagingCenter.Subscribe<MainPage>(this, "Navigation", async (sender) =>
{
var page1 = new Page1();
await Navigation.PushModalAsync(page1);
});
自定义渲染器:
MessagingCenter.Send<MainPage>(MainPage.getInstance(), "Navigation");