C# Windows Phone 8.1消息对话框结果

C# Windows Phone 8.1消息对话框结果,c#,xaml,windows-phone-8.1,C#,Xaml,Windows Phone 8.1,在Windows Phone 8.1中,从MessageDialog获取所选选项时遇到问题。我想做的是等待用户选择选项,然后获取所选选项并对其进行处理 我是这样做的: ... initializing MessageDialog object called dialog ... answer = (int)dialog.ShowAsync().GetResults().Id 但是,由于GetResults在不等待用户操作的情况下立即返回并返回null,所以不会分配answer变量 我必须同步获

在Windows Phone 8.1中,从MessageDialog获取所选选项时遇到问题。我想做的是等待用户选择选项,然后获取所选选项并对其进行处理

我是这样做的:

... initializing MessageDialog object called dialog ...
answer = (int)dialog.ShowAsync().GetResults().Id
但是,由于GetResults在不等待用户操作的情况下立即返回并返回null,所以不会分配answer变量


我必须同步获取结果,因为此代码位于属性内,更重要的是位于catch块内。

您需要等待任务完成后,GetResults才能获得有效的结果。简单的方法是使用wait等待对话框完成:

var cmd = await dialog.ShowAsync();
answer = (int)cmd.Id;
不能在属性中调用异步函数,也不能阻止UI线程使MessageDialog同步

而是返回一个存根应答并调用另一个函数来获得异步结果。当结果在属性中可用时,触发更改通知