2015-02-10 159 views
0

时,我有我的应用程序下面的页面导航:自动解散登录页面登录

AnyPage -> Login -> Register 

当用户被注册,他会自动记录到。所以我想要登录页面自动关闭,如果用户回到它并记录。

我试图添加一些代码到LoginPage.onNavigatedTo方法,但它不起作用。

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     this.navigationHelper.OnNavigatedTo(e); 
     if(AccountController.isLogged()){ 
      Frame.GoBack(); 
     } 
    } 

我该怎么办?

回答

0

的OnNavigatedToOnNavigatedFrom方法是正在进行的导航操作的一部分。当您尝试在进行导航时开始新导航时,导航方法将停止并返回false。

简单的诀窍是:使您的OnNavigatedTo异步并在导航返回前添加延迟。

protected override async void OnNavigatedTo(NavigationEventArgs e) 
{ 
    this.navigationHelper.OnNavigatedTo(e); 
    if(AccountController.isLogged()){ 
     await Task.Delay(1); 
     Frame.GoBack(); 
    } 
} 

这样做的原因是:导航是在UI线程上处理的。由于事件方法无效返回,它们不会等待,如果您返回任务中的任务,当前的调用方完成当前的任务。在等待之后发生的任何事情都将排队等候给调度员,并且一旦他有时间完成(在导航操作结束后立即完成)。