【发布时间】:2016-03-08 14:25:55
【问题描述】:
我尝试像here 描述的那样实现 DialogManager。我没有使用caliburn,所以我重构了一下,它不再是SimpleDialog而是CustomDialog,但并没有太大的变化。
所以现在当我单击调用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 的对话框是模态的,并显示在所属窗口的覆盖层上。 -
mahApps 对话框设计为 非 模式,它是异步的,您无法点击其他任何内容,因为它位于窗口前面。但无论如何,是的,你是对的,我可以只使用主窗口,尽管我认为这不会改变任何事情,因为我也得到了主窗口实例。
标签: c# wpf dialog mahapps.metro