C# 如何知道窗口关闭是否已完成或取消?

C# 如何知道窗口关闭是否已完成或取消?,c#,wpf,C#,Wpf,WPF应用程序。 Window1可以打开WindowA.Show()、WindowB.Show()、WindowC.Show() 当我们关闭窗口1时,我们也要关闭所有打开的窗口(A、B和C) 在Window1\u关闭时我们调用的事件 WindowA.Close(); WindowB.Close(); WindowC.Close(); 在窗口关闭时,可以调用其中任何一个Cancel=true,窗口A(或B或C)不会关闭。 那么我们就不想关闭Window1(父窗口)。 如何在Window1\u C

WPF应用程序。 Window1可以打开
WindowA.Show()、WindowB.Show()、WindowC.Show()

当我们关闭窗口1时,我们也要关闭所有打开的窗口(A、B和C)

Window1\u关闭时
我们调用的事件

WindowA.Close();
WindowB.Close();
WindowC.Close();
在窗口关闭时,可以调用其中任何一个Cancel=true,窗口A(或B或C)不会关闭。 那么我们就不想关闭Window1(父窗口)。 如何在
Window1\u Closing
中知道是否有任何子窗口被取消(未关闭)

  • Window.Closed
    事件在窗口关闭后激发。将逻辑移动到Closed event的eventhandler,或使用该事件发送一些标志:

    bool isClosed = false;
    WindowA.Closed += delegate { isClosed = true; };
    WindowA.Close();
    
    if (isClosed) { 
    }
    
  • Application.Current.Windows
    是当前打开的窗口的集合:

    WindowA.Close();
    bool isClosed = !Application.Current.Windows.OfType<Window>().Contains(WindowA);
    
    WindowA.Close();
    bool isClosed=!Application.Current.Windows.OfType()包含(WindowA);
    

  • 那是一个窗体吗?你不能给你的子窗体添加属性吗。。。?然后关闭时,您可以将其设置为true或false,具体取决于关闭是否被取消。在应用程序窗口中,您可以检查该属性,必要时也可以取消。这是我在这里提问时想要避免的。最后,如果WPF不支持解决方案,我会这样做。请参阅应用程序中是否还有其他窗口?如果没有,在Window1 close上,您也可以退出()应用程序,这将关闭其所有子窗口(A、B、C)@Serge,我实现了您建议的解决方案,它也可以正常工作。非常感谢。