C # WPF comment appliquer des instances uniques de Windows

Je voudrais savoir quelle est la meilleure façon (lire plus élégant) d'avoir une seule instance d'une Fenêtre donnée par l'application en WPF.

Je suis un nouveau venu .NET et WPF et que je suis venu avec l'air assez boiteux.

private static readonly Object MUTEX = new Object();
private static AboutWindow INSTANCE;

public static AboutWindow GetOrCreate() {
    lock (MUTEX) {
        if (INSTANCE == null) {
            INSTANCE = new AboutWindow();
        }
        INSTANCE.Show();
        return INSTANCE;
    }
}

private AboutWindow() {
    InitializeComponent();
}

private void AboutWindow_Closed(object sender, EventArgs e) {
    //the Closed events are handy for me to update values across
    //different windows.
    lock (MUTEX) {
        INSTANCE = null;
    }
}

C'est... cela ressemble à proférer des conneries. Il doit y avoir un moyen d'atteindre le même objectif d'une manière beaucoup plus de manière élégante, droite?

PS: je suis souvent à l'aide de la Closed événement pour modifier les valeurs dans les autres fenêtres ouvertes. Par exemple, j'ai le SettingsWindow avec le "Compte". Lorsque que j'appuie sur ce bouton, le AccountWindow pop-up. Quand je ferme les AcountWindowje veux quelque chose dans la SettingsWindow à changer (une étiquette). D'où la création constante de windows.
En outre, la fermeture est toujours quelque chose que vous avez à traiter en raison de la touche X sur le châssis de la fenêtre...

source d'informationauteur biasedbit