ShowDialog
显示另一个窗口然后取消隐藏第一个窗口。当我这样做时:
this.Hide();
var window2 = new Window2();
window2.ShowDialog();
this.Show();
第一个窗口打开为空白窗口。
这种技术出了什么问题?
当我这样做时:
var window2 = new Window2();
Visibility = Visibility.Collapsed;
window2.ShowDialog();
Visibility = Visibility.Visible;
第一个窗口退出应用程序。
这种技术有什么问题?
答案 0 :(得分:9)
你不应该在WPF中使用hide。这就是WinForms的恶作剧。
请改为:
this.Visibility = Visibility.Collapsed;
...
this.Visibility = Visibility.Visible;
另外,我在上面看到你的评论,这不起作用。但是,我开始了一个新的WPF项目,做了这个,构建并运行它。它有效。
请注意,没有错误。
答案 1 :(得分:3)
Window2 window2 = new Window2();
this.Visibility = Visibility.Collapsed;
window2.ShowDialog();
this.Visibility = Visibility.Visible;
答案 2 :(得分:3)
foreach (Window window in App.Current.Windows)
{
if (!window.IsActive)
{
window.Show();
}
}
适合我的工作
答案 3 :(得分:2)
在我的情况下,下一个代码已经解决了:
new HiddenWindow
{
WindowStyle = WindowStyle.None,
AllowsTransparency = true,
Opacity = 0.0
}.Show();
答案 4 :(得分:0)
检查Application.Current.ShutdownMode
。如果Application.Current.MainWindow
设置为Application.Current.ShutdownMode
,则关闭指定给OnMainWindowClose
的窗口将导致应用程序关闭。在你的情况下,我会将其设置为OnExplicitShutdown
。您可以看到在WPF应用程序项目的app.xaml
中设置的默认值。