#wpf
#wpf
Вопрос:
У меня есть несколько окон (MainWindow, Window1, Window2) в приложении WPF, в каждом окне есть кнопка, которая показывает следующее окно (MainWindow -> Window1 -> Window2) в модальном режиме. Что-то вроде:
Обработчик кнопок MainWindow
Visibility = Visibility.Hidden;
Window1 w = new Window1();
w.ShowDialog();
Visibility = Visibility.Visible;
Обработчик кнопок Window1
Visibility = Visibility.Hidden;
Window2 w = new Window2();
w.ShowDialog();
Visibility = Visibility.Visible;
Проблема в том, что при закрытии Window2 (Alt F4) не только Window1 завершает вызов метода «w.ShowDialog ()», но и MainWindow! Когда Window2 закрывается — оба окна (Window1 MainWindow) становятся видимыми одновременно!
Почему MainWindow становится видимым и что я могу сделать, чтобы избежать этого?
Заранее благодарю вас!
Ответ №1:
Если вы скрываете окна, вы можете также использовать Show()
метод и обрабатывать Closed
событие вместо вызова ShowDialog()
:
Visibility = Visibility.Hidden;
Window1 w = new Window1();
w.Closed = (ss, ee) => Visibility = Visibility.Visible;
w.Show();
Это должно решить вашу проблему.
Комментарии:
1. Наконец я закончил с вашим решением, хотя это очень странно — ShowDialog не работает в WPF так же, как в Windows Forms. Windows Forms позволяет мне создавать вложенные модальные диалоговые окна так, как я ожидал