Dans WPF vous appelez ShowDialog
sur une fenêtre exactement une fois. Après cela, c'est fait pour.Comment détecter qu'une fenêtre a utilisé son appel "ShowDialog"
Semble un peu boiteux pour moi, mais ce sont les règles. Si vous appelez ShowDialog
à nouveau, vous obtenez cette exception:
ne peut pas définir la visibilité ou appelez Show, ShowDialog ou WindowInteropHelper.EnsureHandle après une fenêtre a fermé
Ce que je veux savoir est: Comment puis-je Prenez un Window
(ou UserControl
vraiment) et vérifiez s'il a eu ShowDialog
appelé (donc je sais à new
jusqu'à un autre différent avant d'appeler à nouveau ShowDialog
).
Quelque chose comme ceci:
public void ShowListOfClients()
{
// | This is the method I want to write
// V
RefreshViewIfNeeded(_myWindowOrUserControlThatShowsAList);
FillWindowWithBusinessData(_myWindowOrUserControlThatShowsAList);
_myWindowOrUserControlThatShowsAList.ShowDialog();
}
NOTE: Il est clair que dans l'exemple ci-dessus, il serait plus facile de créer un nouveau WindowOrUserControlThatShowsAList
chaque fois que je rentre dans la méthode. Mais s'il vous plaît considérez la question plus que l'exemple délabré.
J'ai fouillé le dernier. Je ne peux pas penser à un // dire fix. –
J'aime le délégué à la méthode de fermeture. Ça à l'air bon. Merci! – Vaccano
Sauf que la première suggestion ci-dessus ne fonctionne pas spécifiquement pour les fenêtres modales, c'est-à-dire avec ShowDialog() '. Cela évitera l'exception, mais cela provoque d'autres problèmes, comme ne pas pouvoir quitter le processus, et ne pas afficher correctement la fenêtre la deuxième fois qu'elle est rendue visible. Seule la seconde suggestion (c'est-à-dire recréant toujours la fenêtre) est viable. –