我试图实现像here那样的DialogManager。我没有使用caliburn,所以我重构了一下,也不再是SimpleDialog,而是CustomDialog,但没有大的变化。ShowMetroDialogAsync在等待任务时不显示对话框
所以现在当我点击一个叫DialogManager.ShowDialog
的按钮并且等待task.Wait()
产生的任务时,应用程序只会冻结(等待等待),但不显示对话框。我试图调试,但它工作正常,直到行
await Application.Current.Windows.OfType<MetroWindow>().First().ShowMetroDialogAsync(dialog);
。对话框是有效的BaseMetroDialog
,我从Application.Cur...
调用中获得正确的窗口。当我仅仅拨打ShowMessageAsync
时,也会发生这种情况,所以问题似乎与呼叫和等待任务有关。有没有办法阻止下面的执行(强制对话框是模态)?
如果您需要其他信息,请评论,我会延长这个问题,但现在我不知道要显示什么,除了已经链接在一开始的代码。
为什么不使用Application.Current.MainWindow.ShowMetroDialogAsync ...?你的'Application.MainWindow'不是'MetroWindow'吗?请注意,通过设计,MahApps的对话框是模态的,并显示在所属窗口的叠加层上。 – Peter
mahApps对话框是由设计**不是**模式,它是异步的,你只是不能点击任何东西,因为它位于窗口前面。但无论如何,是的,你是对的我可以使用主窗口,但我不认为这会改变任何东西,因为我也得到主窗口实例。 –