如何在Xamarin Forms的客户端项目(IOS/Android)中从一个内容页面导航到另一个内容页面?

6

如何在Xamarin Forms客户端项目中从一个内容页面导航到另一个内容页面?

我已经以不同的方式在每个平台上实现了推送通知。我需要从当前内容页面导航到另一个内容页面。

我尝试在GCMService的OnMessage方法中使用以下代码。 我的问题是第二个导航内容页面的构造函数被调用并成功调试,但我的屏幕仍然显示当前页面而不是第二个导航内容页面。

App.Current.MainPage.Navigation.PushAsync (new SecondNavigationContentPage());
1个回答

14

"主页面"必须是导航页面才能够使用推入弹出导航。你有几个选项。

选项1:

将主页面替换为你的新页面,并使用内容页。

App.Current.MainPage = your new content page

选项2:(可能更好的选择)

将App.Current.MainPage设置为NavigationPage而不是ContentPage,然后将第一个内容页推送到其中。当需要进入第二个内容页时,请使用推送导航结构。

App.Current.MainPage = new NavigationPage;
App.Current.MainPage.Navigation.PushAsync(Page1);
App.Current.MainPage.Navigation.PushAsync(Page2);

文档:http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/pages/

更新

请注意,自本回答以来,已经出现了更好的导航方法,例如learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…应用程序外壳路由。

其他选择是Prism MVVM或您自己的视图模型定位器prismlibrary.com/docs/viewmodel-locator.html。使用此内置导航的缺点是缺乏视图模型到视图模型的导航,并依赖于页面到页面导航,这会导致视图之间不必要的耦合和笨拙的导航。


谢谢@Clint Landry, - Pavan V Parekh
1
请注意,自此回答以来,已经出现了更好的导航方式,例如 https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/ 应用程序外壳路由。另一个选择是 Prism MVVM 或您自己的视图模型定位器 https://prismlibrary.com/docs/viewmodel-locator.html。使用此内置导航的缺点是它缺乏视图模型到视图模型的导航,并且依赖于页面到页面。 - ClintL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接