С# WPF, как обеспечить соблюдение отдельных экземпляров оконC#

Место общения программистов C#
Ответить
Anonymous
 С# WPF, как обеспечить соблюдение отдельных экземпляров окон

Сообщение Anonymous »

Мне хотелось бы знать, как лучше всего (читай, наиболее элегантно) иметь один экземпляр данного окна для каждого приложения в 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 для изменения значения в других открытых окнах. Например, у меня есть Окно настроек с кнопкой «Учетная запись». Когда я нажимаю эту кнопку, появляется AccountWindow. Когда я закрываю AcountWindow, я хочу, чтобы что-то в SettingsWindow изменилось (метка). Отсюда и постоянное создание окон.

Кроме того, с Закрытием всегда приходится сталкиваться из-за кнопки X на рамке окна...

Подробнее здесь: https://stackoverflow.com/questions/398 ... of-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»