Lorsque vous appelez ShowDialog sur une fenêtre WPF deux fois comme ceci:
var window = new Window();
window.ShowDialog(); // returns when user closes first window
window.ShowDialog(); // throws
vous obtiendrez un InvalidOperationException
avec ce message:
Impossible de définir la visibilité ou appelez Afficher ou ShowDialog après fenêtre a fermé.
Pour résoudre ce problème, vous devez recréer la fenêtre à chaque fois, par ex. comme ceci:
var window = new Window();
window.ShowDialog();
window = new Window();
window.ShowDialog();
Pour faire en MEF, vous pourriez exporter un composant contrôleur distinct qui est responsable de la création et montrant votre boîte de dialogue (plutôt que d'exporter votre dialogue directement):
[Export]
public class MyDialogController
{
public void ShowMyDialog()
{
using (var myDialog = new MyDialog())
{
myDialog.ShowDialog();
}
}
}
bien fait Wim Coenen, bien fait. Cela devrait marcher pour ma situation. – BSalita