Wpf MEF组件上的ShowDialog仅工作一次
我创建了一个WPF窗口,并将其作为MEF导出 我可以在MEF导入上执行一次ShowDialog,但第二次它会中止,因为第一次ShowDialog关闭了MEF组件Wpf MEF组件上的ShowDialog仅工作一次,wpf,mef,showdialog,Wpf,Mef,Showdialog,我创建了一个WPF窗口,并将其作为MEF导出 我可以在MEF导入上执行一次ShowDialog,但第二次它会中止,因为第一次ShowDialog关闭了MEF组件 如何允许重复ShowDialog?在WPF窗口上调用ShowDialog两次,如下所示: var window = new Window(); window.ShowDialog(); // returns when user closes first window window.ShowDialog(); // throws va
如何允许重复ShowDialog?在WPF窗口上调用ShowDialog两次,如下所示:
var window = new Window();
window.ShowDialog(); // returns when user closes first window
window.ShowDialog(); // throws
var window = new Window();
window.ShowDialog();
window = new Window();
window.ShowDialog();
您将收到带有以下消息的InvalidOperationException
:
无法设置可见性或呼叫显示或
窗口关闭后显示对话框
要解决此问题,您需要每次重新创建窗口,例如:
var window = new Window();
window.ShowDialog(); // returns when user closes first window
window.ShowDialog(); // throws
var window = new Window();
window.ShowDialog();
window = new Window();
window.ShowDialog();
要在中执行此操作,可以导出一个单独的控制器组件,该组件负责创建并显示对话框(而不是直接导出对话框):
有关如何在WPF应用程序中使用MEF的更多示例,请参见项目下载(查看示例应用程序)。干得好,Wim Coenen,干得好。它应该适合我的情况。