为什么ContentDialog和Prism Navigation会炸毁我的UWP应用程序?

时间:2016-03-24 19:38:02

标签: c# windows-runtime win-universal-app prism

我正在我的一个sessionstateaware页面上显示一个内容对话框,我关闭了对话框,可以在同一页面上重新打开另一个我想要的次数。当我离开并返回并尝试重新打开我的对话框时,它会出现这个错误:

  

WinRT信息:任何时候都只能打开一个ContentDialog。   附加信息:未正确启动异步操作。

我尝试了很多东西,但似乎每当我离开并返回时,某种程度上对控件的引用会丢失而另一个会被创建?

以下是问题区域的一小部分:

if(asyncCommand != null)
asyncCommand.Cancel();

var result = new ContentDialogResult();
if (CanOpenNewDialog)
{

    CanOpenNewDialog = false;
    MyContentDialog.Title = "Homebuyer Options - " + apt.Customer1FullName;
    asyncCommand = MyContentDialog.ShowAsync();

    result = await asyncCommand.AsTask();
}

3 个答案:

答案 0 :(得分:0)

在导航多次时遇到与ContentDialouge相同的问题。应用程序只是崩溃说"异步操作没有正确启动。任何时候都只能打开一个ContentDialog。"

答案 1 :(得分:0)

我得到了一个解决方案。例如,应该等待ContentDialog调用的方法Show Dialouge。因此,将Show Dialouge方法作为一项任务。

    protected async override void OnNavigatedTo(NavigationEventArgs e)
 {
   await ShowDialouge();
 }

 private async Task ShowDialouge()
  {
    ContentDialog dialouge = new ContentDialog();
    await dialouge.ShowAsync();
  }

答案 2 :(得分:0)

The problem was when I was navigating using prism, every time I came back to my page I resubscribed to my event that was creating a dialog. To fix this I simply call unsubscribe OnNavigatedFrom.