2015-02-10 153 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線程上處理的。由於事件方法無效返回,它們不會等待,如果您返回任務中的任務,當前的調用方完成當前的任務。在等待之後發生的任何事情都將排隊等候給調度員,並且一旦他有時間完成(在導航操作結束後立即完成)。