如何在Xamarin Forms导航中超过1页PopAsync?

Fra*_*ida 17 xamarin xamarin.forms

在我的应用程序中,我正在使用a推送页面,NavigationPage并且在某个阶段我想要回到堆栈中的上一页.这是我的结构:

导航页面>第1页>第2页>第3页>第4页

如何PopAsync在不通过Page3的情况下直接从Page4返回Page2?

Cai*_*lin 31

如果你有一个想要弹出的计数,这个效果非常好.

for (var counter = 1; counter < BackCount; counter++)
{
    Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
}
await Navigation.PopAsync();
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案:它的工作方式不是像弹出两次的方式抛出异常,而是避免显示您在视觉上绕过的页面,因此没有不需要的视觉瑕疵. (8认同)
  • 如果您像我一样并且不喜欢对列表进行索引,您可以执行一些巧妙的 LINQing 来获取 NavigationStack 上的倒数第二个项目: `Navigation.NavigationStack.Reverse().Skip(1).Take(1 ).Single()` 而不是 `Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]` (3认同)
  • BackCount 是您要返回的页数。这应该由您以某种方式提供。 (2认同)