在 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);
希望对您有所帮助。
我知道 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);
希望对您有所帮助。