在 Xamarin 中导航到 NavigationPage 的倒数第二页?

In to navigate to the next to last page of a NavigationPage in Xamarin?

我知道 NavigationPage class 有一个方法 PopToRootAsync。它弹出并导航到第一页。如果假设我的导航堆栈如下图所示。我目前在 PageN 上,我不知道堆栈中有多少页。如何导航到倒数第二页(下图中的第 2 页)?

| +-----+ |
| |PageN| |
| +-----+ |
|    .    |
|    .    |
|    .    |
| +-----+ |
| |Page2| |
| +-----+ |
|         |
| +-----+ |
| |Page1| |
| +-----+ |
+---------+

如果你想导航到最后第二页,我建议你可以试试下面的代码:

  Navigation.RemovePage(Navigation.NavigationStack[0]);
   Navigation.PopToRootAsync();

删除最后一个导航页面,然后弹出到根页面。

你可以使用我前一段时间写的这个函数。

 public static async Task PopUntilDestination(Type DestinationPage, INavigation nav)
    {
        int LeastFoundIndex = 0;
        int PagesToRemove = 0;

        for (int index = MasterPageInstance.Detail.Navigation.NavigationStack.Count - 2; index > 0; index--)
        {
            if (MasterPageInstance.Detail.Navigation.NavigationStack[index].GetType().Equals(DestinationPage))
            {
                break;
            }
            else
            {
                LeastFoundIndex = index;
                PagesToRemove++;
            }
        }

        for (int index = 0; index < PagesToRemove; index++)
        {
            nav.RemovePage(MasterPageInstance.Detail.Navigation.NavigationStack[LeastFoundIndex]);
        }

        await nav.PopAsync();
    }

并简单地使用它

PopUntilDestination(typeof(Page2), Navigation);

希望对您有所帮助。