【问题标题】:Creating a new stack of pages after authorization授权后创建新的页面堆栈
【发布时间】:2018-11-09 09:41:30
【问题描述】:
我需要在身份验证后创建新的页面堆栈。在大多数应用程序中,授权表只是应用程序的启动器。
如果我使用 Navigation.PushAsync(Page),如果我按下返回按钮,我可以返回到授权表单。我不需要这个。
MasterDetail 页面已创建,后退按钮应关闭应用程序。
如何实现这个功能?
public async void OnAuthorization(object sender, EventArgs a)
{
await Navigation.PushAsync(new ProfilePage());
}
【问题讨论】:
标签:
c#
xamarin
xamarin.forms
【解决方案1】:
假设“身份验证页面”未包含在 NavigationPage 中,而 ProfilePage 是您的 MasterDetailPage,您只需将 MainPage 替换为您的 ProfilePage。
public async void OnAuthorization(object sender, EventArgs a)
{
Application.Current.MainPage = new ProfilePage();
}
如果您将其全部包装在 NavigationPage 中(不知道为什么会这样,因为那应该只在 MasterDetailPage.Detail 内),您可以将您的 MasterDetailPage 插入堆栈(在当前页面之前)并然后从堆栈中弹出当前的。但根据您的问题所暗示的零堆栈(返回按钮退出),您将弹出到根目录:
Navigation.InsertPageBefore(new SomeMasterDetailPage(), this);
await Navigation.PopToRootAsync();