如何使用 Prism 从 Master Detail 导航 Xamarin Forms 到没有 Master Detail 的内容页面

How do you navigate Xamarin Forms using Prism from Master Detail to Content Page without Master Detail

我在 Prism 中使用 Xamarin Forms。如何从 MasterDetail.Master 导航到不属于 MasterDetail 的 ContentPage(也就是说,我不想只更新详细信息并继续成为 Master/Detail 关系的一部分)?当您从 Hamburger 菜单中单击“设置”时,该用例就像 Gmail 应用程序。它会将您带出 Master/Detail,您现在处于 NavigationPage/ContentPage 并带有返回按钮以返回 MasterDetail 页面。

如果您没有使用 Prism,您可以转到“详细信息”页面并从那里执行 Navigation.PushAsync:

var mdp = Application.Current.MainPage as MasterDetailPage;
mdp.IsPresented = false;
await mdp.Detail.Navigation.PushAsync(new ContentPage2());

但我不知道如何使用 Prism 导航来做到这一点。

-史蒂夫

假设您的 Application.Current.MainPageMasterDetailPageMasterDetailPage 中的当前 DetailNavigationPage(new ContentPage1())

在您的 ContentPage1 中,您有 2 个选项可以导航到 ContentPage2

选项 1: 在当前导航堆栈中显示 ContentPage2

您将 ContentPage2 推入与 ContentPage1 相同的导航堆栈。导航栏中的后退按钮将自动添加。

// Call this code in ContentPage1
_navigationService.PushAsync("ContentPage2");

选项 2: 模态显示 ContentPage2

您将在全新的导航堆栈中以模态方式呈现页面。您需要在 NavigationBar 中添加返回按钮并使用您自己的代码处理点击事件。

// Call this code in ContentPage1
_navigationService.PushAsync("NavigationPage/ContentPage2", null, true);