60 votes

Comment savoir si une fenêtre WPF est fermée?

Je travaille sur une application qui affiche des fenêtres enfant qui peut être fermé par l'utilisateur ou automatiquement fermé. Lors du débogage de certaines exceptions qui ont été jetées, j'ai découvert que j'essayais d'appeler des méthodes comme l' Hide() sur une fenêtre qui avait déjà été fermé; cette branche de code était commun aux deux cas et je n'avais pas remarqué cela.

Une de mes premières idées était de rechercher une propriété sur Window qui indiquent la fenêtre a été fermée. Je n'arrive pas à en trouver un. En WinForms, j'aurais l'air de la IsDisposed propriété pour un peu indicateur fiable que le formulaire avait été fermé (il ne sera pas fiable pour un dialogue, mais je ne travaille pas avec les dialogues.) Je ne vois rien d'équivalent sur Window. La documentation pour l' Window.Close() ne semble pas indiquer toutes les propriétés qui sont modifiés par la méthode. Ai-je raté quelque chose d'évident, ou est la seule méthode pour savoir si une fenêtre a été fermée à la poignée de l' Closed événement? Qui semble sorte de rude exigence pour une tâche simple.

68voto

scwagner Points 3063

Selon cette conversation sur les forums MSDN WPF (voir le dernier message), vous pouvez vérifier si IsLoaded est faux, ce qui signifie que la fenêtre est "éligible" pour décharger son contenu. J'espère que cela fonctionne pour vous!

7voto

Simon_Weaver Points 31141

Une autre façon: Application.Windows contient une liste de fenêtres ouvertes. Vous pouvez vérifier si cette collection contient votre fenêtre (elle est supprimée après la fermeture).

On dirait que vous devez appeler OfType<Window>() car il s'agit d'une collection spécialisée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X