C# UWP C“处理”;X";(关闭)帐户设置spane

C# UWP C“处理”;X";(关闭)帐户设置spane,c#,uwp,C#,Uwp,我有一些代码要显示[AccountsSettingsPane],但我似乎不知道当用户关闭窗格时如何处理这种情况 我找不到任何代码示例来执行此操作 在应用程序中,当您从web帐户提供商请求令牌或异步启动身份验证操作时,您将调用请求或身份验证方法来执行此操作 我们以官方文件的代码为例 在用户单击“X”之前,将调用GetMsaTokenAsync方法,并将返回WebTokenRequestStatus。如果用户单击“X”,则在result.ResponseStatus中返回UserCancel: 启动

我有一些代码要显示
[AccountsSettingsPane]
,但我似乎不知道当用户关闭窗格时如何处理这种情况

我找不到任何代码示例来执行此操作


在应用程序中,当您从web帐户提供商请求令牌或异步启动身份验证操作时,您将调用请求或身份验证方法来执行此操作

我们以官方文件的代码为例

在用户单击“X”之前,将调用
GetMsaTokenAsync
方法,并将返回
WebTokenRequestStatus。如果用户单击“X”,则在
result.ResponseStatus中返回
UserCancel


启动身份验证操作时,在
WebAuthenticationResult.ResponseStatus
中还有一个
WebAuthenticationStatus.UserCancel
结果。当用户关闭窗格时,您可以检查代码以找到相应的API来处理该情况。

MSDN文章中有相关说明,但有点糟糕,您应该使用WebAccountCommand或WebAccountProviderCommand命令来调用该对话框。它们有一个被调用的属性,允许用户在完成对话框时运行代码。@HansPassant,我想我已经有了处理
WebAccountCommand
WebAccountProviderCommand
的部分,我搞不清楚的是如何处理关闭窗格的问题。如果用户没有登录(关闭设置窗格),我想强制登录并关闭应用程序(可能先显示一条消息)。你肯定需要在你的UI中显示它,可能有一个巨大的“登录”按钮,它不会消失,直到你调用的处理程序被调用。我要问的是已经超出这一步了。此对话框已在屏幕上。当用户在“使用此帐户”或“使用其他帐户”下选择一个选项时,我可以处理。我不确定当用户单击“X”时如何处理。根据您的建议,我尝试了上述操作,但由于未单击任何选项,因此无法访问
GetMsaTokenAsync
。在
accountssettingspan.Show()之后,用户立即单击
accountssettingspan上的X
@CarloMendoza您能提供一个简单的示例来了解您的应用程序的运行情况吗?在我使用官方文件样本的测试中,每次显示
AccountsSettingsPane
@CarloMendoza时,它都会调用
GetMsaTokenAsync
方法,判断您的代码是否会进入else if语句
result.ResponseStatus==WebTokenRequestStatus.UserCancel
当用户立即单击X时,它永远不会进入
getmsatokenasytest
所以它永远不会到达那个部分。据我所见,
getmsatokenancytest
仅在用户选择一个选项时才会被调用——就像在我的屏幕截图中,选择Microsoft帐户条目一样,但是如果用户没有选择任何内容并关闭窗格,则什么也不会发生——窗格就会消失。您能够重现吗?
private async void GetMsaTokenAsync(WebAccountProviderCommand command)
{
    WebTokenRequest request = new WebTokenRequest(command.WebAccountProvider, "wl.basic");
    WebTokenRequestResult result = await WebAuthenticationCoreManager.RequestTokenAsync(request);
    if (result.ResponseStatus == WebTokenRequestStatus.Success)
    {
        // TODO
    }
    if (result.ResponseStatus== WebTokenRequestStatus.UserCancel)
    {
        // User click the "X"
    }
}