C# 为什么ContentDialog和Prism导航会破坏我的UWP应用程序?
我在一个sessionstateaware页面上显示一个内容对话框,我可以很好地关闭该对话框,并且可以在同一页面上重新打开另一个对话框,次数可以根据需要而定。当我离开并返回并尝试重新打开对话框时,会出现以下错误: WinRT信息:任何时候只能打开一个ContentDialog。 其他信息:异步操作未正确启动 我尝试了很多方法,但似乎每当我离开并返回时,不知何故,对控件的引用丢失了,并且创建了另一个控件 以下是问题领域的一个小片段:C# 为什么ContentDialog和Prism导航会破坏我的UWP应用程序?,c#,windows-runtime,win-universal-app,prism,C#,Windows Runtime,Win Universal App,Prism,我在一个sessionstateaware页面上显示一个内容对话框,我可以很好地关闭该对话框,并且可以在同一页面上重新打开另一个对话框,次数可以根据需要而定。当我离开并返回并尝试重新打开对话框时,会出现以下错误: WinRT信息:任何时候只能打开一个ContentDialog。 其他信息:异步操作未正确启动 我尝试了很多方法,但似乎每当我离开并返回时,不知何故,对控件的引用丢失了,并且创建了另一个控件 以下是问题领域的一个小片段: if(asyncCommand != null) asyncCo
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();
}
在多次导航时,ContentDialouge面临相同的问题。应用程序崩溃时说“异步操作未正确启动。任何时候只能打开一个ContentDialog。”我找到了解决方案。例如,应该等待ContentDialog正在调用的Show Dialouge方法。因此,将ShowDialouge方法作为一项任务
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
await ShowDialouge();
}
private async Task ShowDialouge()
{
ContentDialog dialouge = new ContentDialog();
await dialouge.ShowAsync();
}
问题是,当我使用prism导航时,每次回到页面时,我都会重新订阅创建对话框的事件。要解决这个问题,我只需调用unsubscribe on Navigated From。没有其他人遇到过这个问题吗?打开一个内容对话框,导航到另一个页面,返回并尝试打开一个对话框,然后砰的一声_eventAggregator.GetEvent().Unsubscribe(ShowHomebuyerSelectionDialog);