显示隐藏的WPF窗口

时间:2013-08-01 12:44:54

标签: c# 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;

第一个窗口退出应用程序。

这种技术有什么问题?

5 个答案:

答案 0 :(得分:9)

你不应该在WPF中使用hide。这就是WinForms的恶作剧。

请改为:

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

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

请注意,没有错误。

enter image description here

答案 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中设置的默认值。