我在WPF应用程序中有2个窗口,如果我关闭主要窗口,我也想关闭另一个窗口。
我通过在App.xaml中设置来实现这一目的:
ShutdownMode="OnMainWindowClose"
2个窗口有一个Window_Closing
事件,我在其中取消初始化某些组件。现在我想要实现的是:如果我关闭MainWindow,第二个窗口的Window_Closing
事件必须在Main的关闭事件之前执行,因为第二个窗口的de-init必须在之前执行首先。关于如何实现这一点的任何想法?
答案 0 :(得分:2)
使用this集合。它包含应用程序所有窗口的列表;你可以遍历它们并对它们进行操作。
在这种情况下,您可以写:
public void MainWindow_Closing(object sender, CancelEventArgs e)
{
foreach (Window w in Application.Current.Windows)
{
if (w.Title == "Secondary Window") // <-- or whatever check you want to identify the secondary Window
{
w.Close();
break;
}
}
}
这使您可以获得灵活的行为,例如,您可以关闭所有辅助窗口,而不仅仅是一个。
答案 1 :(得分:1)
你能从主窗口Window_Closing事件中调用第二个窗口的Close()函数吗?
void MainWindow_Closing(object sender, CancelEventArgs e)
{
secondaryWindow.Close();
...
}
答案 2 :(得分:1)
关闭MainWindow
事件处理程序中Closing
的所有窗口。这应该有效:
void MainWindow_Closing(object sender, CancelEventArgs e)
{
foreach (Window w in Application.Current.Windows)
{
if (w != this)
w.Close();
}
//handle clean up for MainWindow here...
}
您可能还想考虑处理Application.Current.Exit
事件以在一个地方执行所有窗口的清理。