【问题标题】:In to navigate to the next to last page of a NavigationPage in Xamarin?在 Xamarin 中导航到 NavigationPage 的倒数第二页?
【发布时间】:2020-03-09 18:32:43
【问题描述】:

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

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

【问题讨论】:

    标签: xamarin navigation


    【解决方案1】:

    你可以使用我不久前写的这个函数。

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 1970-01-01
        • 2022-01-19
        • 2021-01-06
        • 2017-01-17
        • 2021-03-25
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        相关资源
        最近更新 更多