【发布时间】:2011-03-19 15:29:47
【问题描述】:
目标:
启用独立关闭应用程序的窗口而不影响其他人。该应用程序是在 WPF 中创建的。
问题:
无法关闭窗口
在winform中,有代码winform.close()就可以关闭窗口,但在WPF中不起作用。
您可以使用此代码关闭特定窗口:
Application.Current.Windows[0].Close();
但是如果你有很多窗口并且你想关闭一个特定的窗口而不影响其他窗口,它会如何工作?
【问题讨论】:
目标:
启用独立关闭应用程序的窗口而不影响其他人。该应用程序是在 WPF 中创建的。
问题:
无法关闭窗口
在winform中,有代码winform.close()就可以关闭窗口,但在WPF中不起作用。
您可以使用此代码关闭特定窗口:
Application.Current.Windows[0].Close();
但是如果你有很多窗口并且你想关闭一个特定的窗口而不影响其他窗口,它会如何工作?
【问题讨论】:
完全按照您的描述使用Application 类通过Application.Windows-property 获取窗口。如果您在窗口的代码隐藏中,请致电this.Close();
多个 Windows 的配置
将主窗口设置为Application.MainWindow 属性并将Application.ShutdownMode 设置为适当的值,如果您还想保持应用程序打开,如果主窗口关闭(例如App.Current.ShutdownMode=ShutdownMode.OnExplicitShutdown;)。
我已经观察到,有些人在使用 ShutdownMode 时遇到了问题。解决方法是打开第一个不可见的窗口,然后从该窗口打开可见的应用程序窗口。如果第一个创建的窗口将关闭,这可以防止应用程序关闭。但是,您也应该能够通过 ShutdownMode 属性解决此问题。
在多窗口场景下,您可以使用Shutdown关闭应用,无需关闭每个窗口。
我希望这个答案就是您的问题所在。如果没有,请发表评论。
【讨论】:
我同意 HCL。您可以在窗口的代码隐藏中使用this.Close();,这将像winform.close(); 一样关闭WPF 窗口。
或者您可以使用以下代码获取关闭的特定窗口
Window win = Application.Current.Windows.OfType<Window>().SingleOrDefault(w => w.Name == "Window Name");
win.Close();
【讨论】:
只需使用此代码关闭最近的窗口
Application.Current.Windows[Application.Current.Windows.Count - 1].Close();
【讨论】: