Чтобы перейти на следующую к последней странице NavigationPage в Xamarin? - PullRequest
0 голосов
/ 08 марта 2020

Я знаю, что есть метод PopToRootAsync для класса NavigationPage. Он всплывает и переходит на первую страницу. Допустим, мой стек навигации выглядит следующим образом. Я в настоящее время на PageN, и я не знаю, сколько страниц в стеке. Как я могу перейти на следующую к последней странице (страница 2 на диаграмме ниже)?

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

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Вы можете использовать эту функцию, которую я написал некоторое время назад.

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

Надеюсь, это поможет.

1 голос
/ 09 марта 2020

Если вы хотите перейти на последнюю вторую страницу, я предлагаю вам попробовать следующий код:

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

Удаление последней страницы навигации, затем перейдите на root страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...