登录后自动关闭登录页面

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();
        }
    }

我该怎么做?

OnNavigatedToOnNavigatedFrom 方法是正在进行的导航操作的一部分。当您尝试在正在进行的导航中开始新导航时,导航方法将停止并且 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 并在他有时间时完成(这是在导航操作完成后立即完成)。