Закройте окно WPF отдельно - PullRequest
4 голосов
/ 19 марта 2011

Цель:
Включить закрытие окна (окон) приложения независимо, не затрагивая других.Приложение создано в WPF.

Проблема:

Не удается закрыть окно (а)

В winform достаточно иметь код winform.close(), чтобы закрытьвниз в окне, но он не работает в WPF.

Вы можете использовать этот код для закрытия специфического окна:

Application.Current.Windows[0].Close(); 

но как это будет работать, если у вас много окон и выхотите закрыть определенное окно, не затрагивая другие?

Ответы [ 3 ]

11 голосов
/ 19 марта 2011

Используйте класс Application , чтобы получить Windows через свойство Application.Windows , точно так же, как вы описали.Если вы находитесь в выделенном фрагменте окна, позвоните this.Close();

Конфигурация для нескольких окон
Установите в главном окне значение Application.MainWindow и установите для Application.ShutdownMode подходящее значение, если вы также хотите оставить приложение открытым, если главное окно закрыто (например, App.Current.ShutdownMode=ShutdownMode.OnExplicitShutdown;).

Я уже наблюдал, что у некоторых людей были проблемы с ShutdownMode.Обходной путь для этого состоит в том, чтобы открыть первое окно невидимым, и из этого окна вы открываете видимые окна приложения.Это предотвращает закрытие приложения, если первое созданное окно будет закрыто.Однако вы должны быть в состоянии решить эту проблему также через свойство ShutdownMode.
В сценариях с несколькими окнами вы можете использовать Shutdown , чтобы закрыть приложение, не закрывая каждое окно.

Я надеюсь, что этот ответ - то, о чем Ваш вопрос.Оставьте комментарий, если нет.

10 голосов
/ 20 марта 2011

Я согласен с HCL.Вы можете использовать this.Close(); из выделенного кода окна, это закроет окно WPF как winform.close();.

Или вы можете использовать следующий код для получения определенного окна для закрытия

Window win = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Name == "Window Name");
win.Close();
0 голосов
/ 27 февраля 2016

просто используйте этот код, чтобы закрыть самое последнее окно

Application.Current.Windows[Application.Current.Windows.Count - 1].Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...