【问题标题】:How to navigate away from MasterDetailPage but not reset the navigation stack如何导航离开 MasterDetailPage 但不重置导航堆栈
【发布时间】:2020-04-25 09:46:38
【问题描述】:

我终于找到了(因为 PushAsync() 不能全局工作)如何从 MasterDetailPage 导航到下一页,如下所示:

Application.Current.MainPage = new NavigationPage(new Screen_Profile());

这会打开一个新页面,但我无法返回上一页,但这会重置导航堆栈。

我如何才能离开但仍然可以选择返回到 MasterDetail 页面导航?

【问题讨论】:

  • 您是否尝试将 MasterDetailPage 添加到 NavigationPage 中,例如 app.cs 中的 MainPage = new NavigationPage(new YourMasterDetailPage ());

标签: xamarin xamarin.forms


【解决方案1】:

你可以试试

 Navigation.PushAsync(new Screen_Profile());

尝试在此链接上阅读更多内容 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical

【讨论】:

  • 它说“全球不支持推送异步
  • @user13397492 你可以画一个草图来描述你想要的效果。
【解决方案2】:

Here is the reference about the navigation with masterDetailpage

在您的 App.cs 中,您将拥有与此代码类似的内容(抱歉,如果它无法编译,我正在编写此代码)。

public static NavigationPage NavPage = null;

public App()
{
    var _navPage = new NavigationPage(new PageOne());

    var _masterPage = new MasterDetailpage();
    _masterPage.Detail = NavPage;
    _masterPage.Master = (your master / menu page);

    MainPage = _masterPage;

}

然后在你的代码中你可以参考

await App.NavPage.PushAsync(new PageTwo());

这会让你发挥作用。但是,您不想以这种方式访问​​ NavigationPage。您可以使用 DependencyInjection 创建 NavigationService。

类似

public class NavigationService: INavigationService
{

      public NavigationService(NavigationPage navPage)
      {
            // Keep local copy of navPage
      }

      public async Task NavigateTo(Page page)
      {

            await _navPage.PushAsync(page);

      }

      public async Task GoBack()
      {

            await _navPage.PopAsync();

      }

}

你应该使用这样的模式来导航。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-08
    • 2021-12-23
    • 1970-01-01
    • 2020-01-28
    • 2019-07-16
    • 2022-01-24
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多