C# WPF, как осуществить единственные экземпляры окон

Я хотел бы знать то, что является лучшим способом (читайте самый изящный) иметь единственный экземпляр данного Окна на приложение в WPF.

Я - вновь прибывший к.NET и WPF и что я придумал довольно хромые взгляды.

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;
    }
}

Вещь..., это похоже на чрезвычайное дерьмо. Должен быть некоторый способ достигнуть той же цели намного более изящным способом, правильно?

PS: я часто использую Closed событие для изменения значений в других открытых окнах. Например, у меня есть SettingsWindow с кнопкой "Account". Когда я нажимаю ту кнопку, AccountWindow открывается. Когда я закрываю AcountWindow, я хочу, чтобы что-то в SettingsWindow изменилось (маркировка). Следовательно постоянное создание окон.
Кроме того, Близко что-то, с чем всегда необходимо иметь дело из-за X кнопок на рамке окна...

11
задан biasedbit 20 October 2010 в 23:30
поделиться