Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf MEF组件上的ShowDialog仅工作一次_Wpf_Mef_Showdialog - Fatal编程技术网

Wpf MEF组件上的ShowDialog仅工作一次

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

我创建了一个WPF窗口,并将其作为MEF导出

我可以在MEF导入上执行一次ShowDialog,但第二次它会中止,因为第一次ShowDialog关闭了MEF组件


如何允许重复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,干得好。它应该适合我的情况。