单独关闭WPF窗口

时间:2011-03-19 15:29:47

标签: c# wpf

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

问题:

  

无法关闭窗口

在winform中,只需要使用代码winform.close()来关闭窗口,但它在WPF中不起作用。

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

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

但是如果你有很多窗户而你想要在不影响其他窗口的情况下关闭特定窗口会怎样呢?

3 个答案:

答案 0 :(得分:11)

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

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

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

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:0)

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

public static int find(int x) {
    return f[x] == x ? x : (f[x] = find(f[x]));
}