Я я новичок в .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 для изменения значения в других открытых окнах. Например, у меня есть Окно настроек с кнопкой «Учетная запись». Когда я нажимаю эту кнопку, появляется AccountWindow. Когда я закрываю AcountWindow, я хочу, чтобы что-то в SettingsWindow изменилось (метка). Отсюда и постоянное создание окон.
Кроме того, с Закрытием всегда приходится сталкиваться из-за кнопки X на рамке окна...
Подробнее здесь: https://stackoverflow.com/questions/398 ... of-windows
Мобильная версия