Когда вы вызываете ShowDialog в окне WPF дважды, как это:
var window = new Window();
window.ShowDialog(); // returns when user closes first window
window.ShowDialog(); // throws
вы получите InvalidOperationException
с этим сообщением:
Невозможно установить видимость или вызов Показать или
ShowDialog после закрытия окна.
Чтобы это исправить, вам нужно каждый раз пересматривать окно, например, как это:
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();
}
}
}