登录后自动关闭登录页面
Auto dismiss Login page when logged
我的应用程序中有以下页面导航:
AnyPage -> Login -> Register
当用户注册后,他会自动登录。所以我希望在用户返回登录页面并登录时自动关闭登录页面。
我试图向 LoginPage.onNavigatedTo
方法添加一些代码,但它不起作用。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
Frame.GoBack();
}
}
我该怎么做?
OnNavigatedTo 和 OnNavigatedFrom 方法是正在进行的导航操作的一部分。当您尝试在正在进行的导航中开始新导航时,导航方法将停止并且 return false。
简单的技巧是:让您的 OnNavigatedTo 异步并在返回之前添加延迟。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
await Task.Delay(1);
Frame.GoBack();
}
}
这样做的原因是:导航是在 UI 线程上处理的。由于事件方法是 void returning,因此不会等待它们,如果您 return 在其中执行任务,则当前调用者将完成他当前的任务。 await 之后发生的任何事情都会排队等待 Dispatcher 并在他有时间时完成(这是在导航操作完成后立即完成)。
我的应用程序中有以下页面导航:
AnyPage -> Login -> Register
当用户注册后,他会自动登录。所以我希望在用户返回登录页面并登录时自动关闭登录页面。
我试图向 LoginPage.onNavigatedTo
方法添加一些代码,但它不起作用。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
Frame.GoBack();
}
}
我该怎么做?
OnNavigatedTo 和 OnNavigatedFrom 方法是正在进行的导航操作的一部分。当您尝试在正在进行的导航中开始新导航时,导航方法将停止并且 return false。
简单的技巧是:让您的 OnNavigatedTo 异步并在返回之前添加延迟。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
await Task.Delay(1);
Frame.GoBack();
}
}
这样做的原因是:导航是在 UI 线程上处理的。由于事件方法是 void returning,因此不会等待它们,如果您 return 在其中执行任务,则当前调用者将完成他当前的任务。 await 之后发生的任何事情都会排队等待 Dispatcher 并在他有时间时完成(这是在导航操作完成后立即完成)。