从导航堆栈中删除页面 - xamarin.forms
Remove page from Navigation stack - xamarin.forms
在我的应用程序结构中,如下所示,
列表页 -> 详情页 -> 编辑页
并且在编辑页面中有按钮 "Delete" 可以从数据库中删除数据。
现在我的问题是将用户从编辑页面导航到列表页面,
我为此使用了 Navigation.popasync 2 次,但在详细信息页面上,我从服务中收到错误消息,指出不存在此类记录。
如何正确地将用户从编辑页面导航到列表页面?
那是因为您的详细信息页面正在尝试加载在 OnAppearing 或其他一些事件中不再存在的记录。因此,只需在记录为空的情况下在顶部放置一个条件即可不加载页面。
// 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 ();
Navigation.PopToRootAsync ();
将您送回您的主页..
你可以这样做:
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 ();
希望这对某人有所帮助!
var PreviousPage = Shell.Current.Navigation.NavigationStack.Count - 2;
var PageYouWantCheck= typeof(NameOfPage);
if(Shell.Current.Navigation.NavigationStack[PreviousPage].GetType() == PageYouWantCheck)
{
var pageToRemove = Shell.Current.Navigation.NavigationStack[PreviousPage];
Shell.Current.Navigation.RemovePage(pageToRemove);
}
在我的应用程序结构中,如下所示, 列表页 -> 详情页 -> 编辑页
并且在编辑页面中有按钮 "Delete" 可以从数据库中删除数据。
现在我的问题是将用户从编辑页面导航到列表页面,
我为此使用了 Navigation.popasync 2 次,但在详细信息页面上,我从服务中收到错误消息,指出不存在此类记录。
如何正确地将用户从编辑页面导航到列表页面?
那是因为您的详细信息页面正在尝试加载在 OnAppearing 或其他一些事件中不再存在的记录。因此,只需在记录为空的情况下在顶部放置一个条件即可不加载页面。
// 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 ();
Navigation.PopToRootAsync ();
将您送回您的主页..
你可以这样做:
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 ();
希望这对某人有所帮助!
var PreviousPage = Shell.Current.Navigation.NavigationStack.Count - 2;
var PageYouWantCheck= typeof(NameOfPage);
if(Shell.Current.Navigation.NavigationStack[PreviousPage].GetType() == PageYouWantCheck)
{
var pageToRemove = Shell.Current.Navigation.NavigationStack[PreviousPage];
Shell.Current.Navigation.RemovePage(pageToRemove);
}