我想知道是否有比下面更好的方法来检查窗口是否关闭,或者Closing
是否可以解决关闭程序?
我们按照自己的方式行事:
var window = Application.Current.Windows.FirstOrDefault(x => x is FooWindow);
if (window != null)
{
var gotClosed = false;
window.Closed += (sender, args) => gotClosed = true;
window.Close();
if (gotClosed == false)
{
//Close got cancled, by closing...
}
}
答案 0 :(得分:2)
从检查.NET源代码,我不太确定IsDisposed
是否安全。但是,似乎没有很多安全的选择。到目前为止我一直使用的那个没有问题的是在关闭后检查Visibility
Visible
属性。
更干净的方法可能是创建自己的类并覆盖OnClosing()
或OnClosed()
但是:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
// Fires Closing event
base.OnClosing(e);
if (!e.Cancel)
{
// Window was allowed to close.
// Set IsClosed = true or something like that
}
}
在那里,您可以将结果存储在属性中。例如。
答案 1 :(得分:1)
我不确定它比您的解决方案更好,但在调用window.Close()
后,属性IsDisposed
变为真。所以,你可以检查一下:
if(window.IsDisposed)
{
....
}