显示隐藏的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
中设置的默认值。