Windows Phone 8.1 MessageDialog结果

时间:2015-08-11 12:31:44

标签: 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变量未被分配。

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

1 个答案:

答案 0 :(得分:4)

在GetResults获得有效结果之前,您需要等待任务完成。简单的方法是使用await等待对话框完成:

var cmd = await dialog.ShowAsync();
answer = (int)cmd.Id;

您无法在属性中调用异步函数,也无法阻止UI线程使MessageDialog同步。

而是返回一个存根答案并调用另一个函数来获取异步结果。当结果在酒店提供并触发更改通知时。