【问题标题】:Close a WPF window separately单独关闭 WPF 窗口
【发布时间】:2011-03-19 15:29:47
【问题描述】:

目标:
启用独立关闭应用程序的窗口而不影响其他人。该应用程序是在 WPF 中创建的。

问题:

无法关闭窗口

在winform中,有代码winform.close()就可以关闭窗口,但在WPF中不起作用。

您可以使用此代码关闭特定窗口:

Application.Current.Windows[0].Close(); 

但是如果你有很多窗口并且你想关闭一个特定的窗口而不影响其他窗口,它会如何工作?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    完全按照您的描述使用Application 类通过Application.Windows-property 获取窗口。如果您在窗口的代码隐藏中,请致电this.Close();

    多个 Windows 的配置
    将主窗口设置为Application.MainWindow 属性并将Application.ShutdownMode 设置为适当的值,如果您还想保持应用程序打开,如果主窗口关闭(例如App.Current.ShutdownMode=ShutdownMode.OnExplicitShutdown;)。

    我已经观察到,有些人在使用 ShutdownMode 时遇到了问题。解决方法是打开第一个不可见的窗口,然后从该窗口打开可见的应用程序窗口。如果第一个创建的窗口将关闭,这可以防止应用程序关闭。但是,您也应该能够通过 ShutdownMode 属性解决此问题。
    在多窗口场景下,您可以使用Shutdown关闭应用,无需关闭每个窗口。

    我希望这个答案就是您的问题所在。如果没有,请发表评论。

    【讨论】:

    • “我已经观察到,有些人在使用 ShutdownMode 时遇到了问题。解决方法是打开第一个不可见的窗口,然后从该窗口打开可见的应用程序窗口。”您关注的属性“可见性”?
    • @FullmetalBoy:是的,您可以让应用程序打开第一个窗口,创建一些新的窗口实例并将第一个窗口的可见性设置为隐藏。但是正如我所写的,如果您相应地设置了 ShutdownMode(据我所知,您必须在执行任何其他操作之前执行 OnStartup),则这不是必需的。以下帖子解释了有关 WPF 应用程序启动的一些事情。你可能会感兴趣:ageektrapped.com/blog/…
    【解决方案2】:

    我同意 HCL。您可以在窗口的代码隐藏中使用this.Close();,这将像winform.close(); 一样关闭WPF 窗口。

    或者您可以使用以下代码获取关闭的特定窗口

    Window win = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Name == "Window Name");
    win.Close();
    

    【讨论】:

      【解决方案3】:

      只需使用此代码关闭最近的窗口

      Application.Current.Windows[Application.Current.Windows.Count - 1].Close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多