记录时自动关闭登录页面

时间:2015-02-10 12:08:36

标签: windows-phone-8 windows-phone windows-phone-8.1

我的应用中有以下页面导航:

AnyPage -> Login -> Register

当用户注册时,他会自动登录。因此,如果用户返回并登录,我希望自动关闭“登录”页面。

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

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

我该怎么做?

1 个答案:

答案 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并在他有时间完成后(在导航操作完成后立即完成)。