显示隐藏的WPF窗口

在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中使用hide是winforms shenanigans。

相反

 this.visibility = Visibility.Collapsed; ... this.visibility = Visibility.Visible; 

另外我在上面看到你的评论,这不起作用。 但是,我开始了一个新的WPF项目,做了这个,构建并运行它。 有用。

请注意,没有错误。

在此处输入图像描述

  Window2 window2 = new Window2(); this.Visibility = Visibility.Collapsed; window2.ShowDialog(); this.Visibility = Visibility.Visible; 

在我的情况下,下一个代码解决了:

 new HiddenWindow { WindowStyle = WindowStyle.None, AllowsTransparency = true, Opacity = 0.0 }.Show(); 
 foreach (Window window in App.Current.Windows) { if (!window.IsActive) { window.Show(); } } 

对我来说很好

检查Application.Current.ShutdownMode 。 如果Application.Current.ShutdownMode设置为OnMainWindowClose ,则关闭分配给Application.Current.MainWindow的窗口将导致应用程序关闭。 在你的情况下,我会将其设置为OnExplicitShutdown 。 您可以看到在WPF应用程序项目的app.xaml中设置的默认值。