代码之家  ›  专栏  ›  技术社区  ›  BSalita

MEF组件上的ShowDialog只工作一次

  •  4
  • BSalita  · 技术社区  · 14 年前

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

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

    如何允许重复ShowDialog?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Wim Coenen    14 年前

    在WPF窗口上调用ShowDialog两次时,如下所示:

    var window = new Window();
    window.ShowDialog(); // returns when user closes first window
    window.ShowDialog(); // throws 
    

    InvalidOperationException 通过此消息:

    无法设置可见性或呼叫或显示

    要解决此问题,每次都需要重新创建窗口,例如:

    var window = new Window();
    window.ShowDialog();
    window = new Window();
    window.ShowDialog();
    

    MEF

    [Export]
    public class MyDialogController
    {
       public void ShowMyDialog()
       {
          using (var myDialog = new MyDialog())
          {
              myDialog.ShowDialog();
          }
       }
    }
    
        2
  •  0
  •   jbe    14 年前

    WPF Application Framework (WAF) 项目下载(看看示例应用程序)。