我想从自定义渲染器导航到xamarin表单内容页面。我正在使用自定义渲染器来创建地图,当我单击标记时,我需要重定向到它的详细信息页面。我使用此链接来开发地图-https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/map/customized-pin
void OnInfoWindowClick (object sender, GoogleMap.InfoWindowClickEventArgs e)
{
var customPin = GetCustomPin (e.Marker);
if (customPin == null)
{
throw new Exception ("Custom pin not found");
}
else
{
// navigate to details page , that is a content page in xamarin forms.
}
}
这是我的自定义图钉和详细信息
答案 0 :(得分:0)
您有几种选择:
邮件中心
在您的App.xaml.cs的构造函数中注册
MessagingCenter.Subscribe<App, CustomModelClass>(App.Current, "OpenPage", (snd, arg) =>
{
Device.BeginInvokeOnMainThread(() => {
MainPage.Navigation.PushAsync(new ContentPage(arg));
});
});
在渲染器中,然后调用
MessagingCenter.Send<App, CustomModelClass>(App.Current as App, "OpenPage", model);
请注意,CustomModelClass可以是您定义的任何类,可以是复杂模型,也可以只是字符串。
App.xaml.cs中的静态属性
在App.xaml.cs中创建属性
public NavigationPage NavigationPage
{
get
{
if (MainPage == null)
return null;
if (MainPage is MasterDetailPage && (MainPage as MasterDetailPage).Detail is NavigationPage)
return (MainPage as MasterDetailPage).Detail as NavigationPage;
else if (MainPage is NavigationPage)
return (MainPage as NavigationPage);
}
}
但是,您可能还必须确保主页始终包含正确的页面。
但是,现在您可以在自定义渲染器中调用:
(App.Current as App).NavigationPage.Navigation.PushAsync(new ContentPage());
或您要推送的任何页面。