Я хотел бы знать то, что является лучшим способом (читайте самый изящный) иметь единственный экземпляр данного Окна на приложение в 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 кнопок на рамке окна...