如何以 xamarin 形式将一个内容页面从客户端项目(IOS/Android)导航到另一个内容页面?

Posted

技术标签:

【中文标题】如何以 xamarin 形式将一个内容页面从客户端项目(IOS/Android)导航到另一个内容页面?【英文标题】:How to navigate one Content page to another Content page from client project (IOS/Android) in xamarin forms? 【发布时间】:2015-06-24 10:44:35 【问题描述】:

如何在 xamarin 表单中将一个内容页面从客户端项目导航到另一个内容页面?

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

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

App.Current.MainPage.Navigation.PushAsync (new SecondNavigationContentPage());

【问题讨论】:

【参考方案1】:

“主页”必须是导航页面才能使用推送弹出导航进行导航。你有几个选择。

选项 1:

用您的新页面替换 MainPage 并使用内容页面。

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/

更新

请注意,由于这个答案已经出现了更好的导航方式,例如 docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/... 应用程序外壳路由。

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

【讨论】:

谢谢@克林特兰德里, 请注意,由于这个答案已经出现了更好的导航方式,例如docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… app shell routing。另一种选择是 Prism MVVM 或您自己的视图模型定位器prismlibrary.com/docs/viewmodel-locator.html。使用这种内置导航的缺点是它缺少视图模型来查看模型导航并且依赖于页面到页面。

以上是关于如何以 xamarin 形式将一个内容页面从客户端项目(IOS/Android)导航到另一个内容页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从Xamarin.Forms ScrollView中删除内容?

我们如何以xamarin形式隐藏详细信息页面上的标签?

如何以 xamarin 形式创建用户会话?

从用户输入生成 pdf 到 PDF Xamarin

如何以 xamarin 形式绘制图像?

如何在内容页面中添加按钮以使用自定义渲染器 - 视图捕获图像