Navigation 从导航堆栈中删除页面-xamarin.forms

Navigation 从导航堆栈中删除页面-xamarin.forms,navigation,xamarin.forms,Navigation,Xamarin.forms,在我的应用程序中,结构如下所示, 列表页->详细信息页->编辑页 在编辑页面中有一个“删除”按钮,可以从数据库中删除数据 现在我的问题是将用户从编辑页面导航到列表页面 为此,我使用了Navigation.popasync两次,但在详细信息页面上,我从服务中得到一个错误,即不存在这样的记录 如何正确地将用户从编辑页面导航到列表页面?这将是因为您的详细信息页面正在尝试加载一条在OnAppearing或其他事件中不再存在的记录。因此,如果记录为null,只需在顶部添加一个条件,即可不加载页面 // R

在我的应用程序中,结构如下所示, 列表页->详细信息页->编辑页

在编辑页面中有一个“删除”按钮,可以从数据库中删除数据

现在我的问题是将用户从编辑页面导航到列表页面

为此,我使用了Navigation.popasync两次,但在详细信息页面上,我从服务中得到一个错误,即不存在这样的记录


如何正确地将用户从编辑页面导航到列表页面?

这将是因为您的详细信息页面正在尝试加载一条在OnAppearing或其他事件中不再存在的记录。因此,如果记录为null,只需在顶部添加一个条件,即可不加载页面

// Remove page before Edit Page
this.Navigation.RemovePage (this.Navigation.NavigationStack [this.Navigation.NavigationStack.Count - 2]);
// This PopAsync will now go to List Page
this.Navigation.PopAsync ();
将您发送回主页。

您可以这样做:

var _navigation = Application.Current.MainPage.Navigation; 
var _lastPage = _navigation.NavigationStack.LastOrDefault(); 
//Remove last page
_navigation.RemovePage(_lastPage);
//Go back 
_navigation.PopAsync();

但是,如果需要导航到根页面,可以使用以下选项:

var _navigation = Application.Current.MainPage.Navigation;
_navigation.PopToRootAsync ();  

因为这有助于解释到底发生了什么?你知道,这和我们通常写评论的原因是一样的!这是一个非常糟糕的建议。例如,在uwp上,您会收到一个错误,告诉您“您无法删除页面,您已打开”,这在android上也会发生,但并不总是如此。若您正在异步推送,并且推送事件比popevent慢,则会发生。在IOS上我不确定。我已经在android/IOS上实现了这一点,它工作得非常好。我没有登记UWP@Hetal这应该归功于此@NickKovalsky是否以模式推送页面?这可能不一定会从堆栈中删除detailpage。如果您在navigationstack中检查页面,您可能会在内存中看到detailpage。
var _navigation = Application.Current.MainPage.Navigation;
_navigation.PopToRootAsync ();