我的应用中有以下页面导航:
AnyPage -> Login -> Register
当用户注册时,他会自动登录。因此,如果用户返回并登录,我希望自动关闭“登录”页面。
我尝试在LoginPage.onNavigatedTo
方法中添加一些代码,但它不起作用。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
Frame.GoBack();
}
}
我该怎么做?
答案 0 :(得分:0)
OnNavigatedTo 和 OnNavigatedFrom 方法是正在进行的导航操作的一部分。当您尝试在正在进行导航时尝试启动新导航时,导航方法将停止并返回false。
简单的诀窍是:让你的OnNavigatedTo异步并在导航之前添加延迟。
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
if(AccountController.isLogged()){
await Task.Delay(1);
Frame.GoBack();
}
}
这样做的原因是:导航在UI线程上处理。由于事件方法返回无效,因此不会等待它们,如果您在其中返回任务,则当前调用方将完成当前任务。无论等待在await之后排队等候Dispatcher并在他有时间完成后(在导航操作完成后立即完成)。