Xamarin.Forms中导航堆栈中的删除错误

Xamarin.Forms中导航堆栈中的删除错误,xamarin,navigation,xamarin.forms,stack,Xamarin,Navigation,Xamarin.forms,Stack,我对Xamarin.Forms及其导航页面系统有一个简单但疯狂的小问题。 我的应用程序是这样启动的: MainPage = new NavigationPage(new IntroPage()); NewPersonPage (Page where I am now) ------ RolePage ------ RegisterPage ------ DetailsPage ------ HomePage ------ IntroPage DetailsPage (new, and whe

我对Xamarin.Forms及其导航页面系统有一个简单但疯狂的小问题。 我的应用程序是这样启动的:

MainPage = new NavigationPage(new IntroPage());
NewPersonPage (Page where I am now)
------
RolePage
------
RegisterPage
------
DetailsPage
------
HomePage
------
IntroPage
DetailsPage (new, and where I am now)
------
NewPersonPage
------
HomePage
------
IntroPage
所以,我有我的导航页面。现在,我做了一些操作,我的导航堆栈(从上到下)如下所示:

MainPage = new NavigationPage(new IntroPage());
NewPersonPage (Page where I am now)
------
RolePage
------
RegisterPage
------
DetailsPage
------
HomePage
------
IntroPage
DetailsPage (new, and where I am now)
------
NewPersonPage
------
HomePage
------
IntroPage
现在,我想这样做。 从此堆栈中删除:角色、注册和详细信息页面。 之后,转到新的详细信息页面,以了解如下情况:

MainPage = new NavigationPage(new IntroPage());
NewPersonPage (Page where I am now)
------
RolePage
------
RegisterPage
------
DetailsPage
------
HomePage
------
IntroPage
DetailsPage (new, and where I am now)
------
NewPersonPage
------
HomePage
------
IntroPage
为此,我在NewPersonPage中执行以下操作:

// Remove RolePage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
// Remove RegisterPage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
// Remove DetailsPage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);

// Now create new DetailsPage and go here
await Navigation.PushAsync(new DetailsPage(stuff));
// Remove NewPersonPage 
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
目前还没有问题。 现在,从我的新DetailsPage中,我想从堆栈中删除NewPersonPage。所以我这样做:

// Remove RolePage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
// Remove RegisterPage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
// Remove DetailsPage
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);

// Now create new DetailsPage and go here
await Navigation.PushAsync(new DetailsPage(stuff));
// Remove NewPersonPage 
Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
但它不起作用!抛出一个异常,表示我超出堆栈的范围。但这不是真的,因为如果我尝试进入上一页,我就进入了新的个人页面。
为什么不能正常工作?

在导航之前,您是否查看了Navigation.NavigationStack.Count value。RemovePage?是的。从NewPersonPage删除页面时,计数为。但当我试图查看详细信息页面中的计数时,计数为0。为什么?很奇怪,因为如果它真的是0,我就不能回到NewPersonPage…你应该在github上发布回购协议,这样我们就可以查看了。我发现了问题。由于某些原因,导航堆栈计数等于零,因此无法在页面生成器中执行堆栈操作。