繁体   English   中英

等待用户从 ContentDialog 输入时如何处理

[英]How to process while waiting for user input from ContentDialog

对于异步任务,我经常推迟await执行其他处理,同时等待异步任务返回。 例如,而不是:

bool t = await myAsync();

我用

Task<bool> t = myAsync();
//do something else here while waiting
await t; //or await Task.WhenAll(t, p, s); when more than one

如何将这种方法与ContentDialog 我想向用户显示内容对话框并在用户等待响应时执行其他处理。

我尝试了以下方法,但失败了,因为ContentDialog返回IAsyncOperation而不是Task

Task<ContentDialogResult> result = myContentDialog.ShowAsync();
//do something else here
await result;

我怎样才能做到这一点?

IAsyncOperation工作方式类似于Task 我能够通过等待IAsyncOperation然后使用GetResults()来获取用户响应来实现这一点。

要复制创建一个名为“MyTextBox”的ButtonTextBox然后将下面的代码粘贴到Button_Clicked事件中。

//prep dialog
ContentDialog dialog = new ContentDialog
{
     Content = "Test Dialog",
     Title = "Test Dialog",
     SecondaryButtonText = "Cancel",
     PrimaryButtonText = "OK"
};


//show dialog
IAsyncOperation<ContentDialogResult> result = dialog.ShowAsync();

//do some background processing
MyTextBlock.Text = "background processing...";

//wait for user response
_ = await result;

//get user response
ContentDialogResult buttonClicked = result.GetResults();
            
//display user response on screen
if(buttonClicked != ContentDialogResult.Primary)
{
    MyTextBlock.Text += "\nYou cancelled!";
}
else
{
   MyTextBlock.Text += "\nYou pressed OK!";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM