目标:
使应用程序窗口能够独立关闭而不影响其他窗口。该应用程序是使用WPF创建的。
问题:
无法关闭窗口
在winform中,只需要使用代码 winform.close()
即可关闭窗口,但在WPF中不起作用。
您可以使用以下代码来关闭特定窗口:
Application.Current.Windows[0].Close();
但是如果您有多个窗口并且想关闭特定的窗口而不影响其他窗口,该怎么办呢?
使用Application类通过Application.Windows属性获取窗口,就像您描述的那样。如果您在窗口的代码后面,请调用this.Close();
多窗口配置
将主窗口设置为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();