如何从MasterDetailPage导航而不重置导航堆栈

时间:2020-04-25 09:46:38

标签: xamarin xamarin.forms

我终于找到了(因为PushAsync()在全球范围内不起作用)如何像这样从MasterDetailPage导航到下一页:

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

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

如何导航但仍可以选择返回MasterDetail页面导航?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用

 Navigation.PushAsync(new Screen_Profile());

尝试阅读更多有关此链接的信息 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/hierarchical

答案 1 :(得分:0)

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();

      }

}

您应该使用这种模式进行导航。