Вопрос:
В окне WPF я хочу скрыть его, показать другое окно, используя ShowDialog, затем отобразить первое окно.
Когда я это сделаю:
this.Hide(); var window2 = new Window2(); window2.ShowDialog(); this.Show();
Первое окно открывается как пустое и пустое окно.
Что не так в этой технике?
Когда я это сделаю:
var window2 = new Window2(); Visibility = Visibility.Collapsed; window2.ShowDialog(); Visibility = Visibility.Visible;
Первое окно выходит из приложения.
Что не так в этой технике?
Лучший ответ:
Вы не должны использовать скрыть в WPF. Это WinForms Shenanigans.
Сделайте это вместо этого:
this.Visibility = Visibility.Collapsed; … this.Visibility = Visibility.Visible;
Кроме того, я видел ваш комментарий выше, что это не работает. Однако я запустил новый проект WPF, сделал это, собрал и запустил его. Оно работает.
Обратите внимание, что ошибок нет.
Ответ №1 Window2 window2 = new Window2(); this.Visibility = Visibility.Collapsed; window2.ShowDialog(); this.Visibility = Visibility.Visible; Ответ №2foreach (Window window in App.Current.Windows) { if (!window.IsActive) { window.Show(); } }
Прекрасно работает для меня
Ответ №3
В моем случае выработал следующий код:
new HiddenWindow { WindowStyle = WindowStyle.None, AllowsTransparency = true, Opacity = 0.0 }.Show(); Ответ №4
Проверьте Application.Current.ShutdownMode. Закрытие окна, которое вы назначаете Application.Current.MainWindow, приведет к отключению приложения, если для параметра Application.Current.ShutdownMode установлено значение OnMainWindowClose. В вашем случае я бы установил его на OnExplicitShutdown. Вы можете увидеть значения по умолчанию, установленные в app.xaml вашего проекта приложения WPF.