wpf closing事件mvvm绑定CancelEventArgs 始终为null
在WPF中,关闭事件(Closing Event)通常用于在窗口关闭之前执行某些操作。在MVVM模式中,可以将关闭事件绑定到ViewModel中的一个命令,以便在关闭窗口之前执行特定的操作。
在绑定关闭事件时,可以使用CancelEventArgs参数来防止窗口关闭。当用户尝试关闭窗口时,可以检查某些条件,并根据情况取消关闭操作。
然而,在某些情况下,CancelEventArgs参数始终为空,这可能会导致关闭事件无法正常工作。这通常是因为窗口的Close()方法已经被调用,而且窗口已经关闭,因此取消关闭操作已经没有意义了。
解决这个问题的方法是在窗口的Closing事件中添加一个标志,以便在窗口已经关闭时取消关闭操作。例如:
private bool _isClosing = false;
private void Window_Closing(object sender, CancelEventArgs e)
{
if (!_isClosing)
{
e.Cancel = true;
//执行你需要的操作
}
}
private void CloseWindow()
{
_isClosing = true;
this.Close();
}
在关闭窗口时,设置_isClosing标志为true,然后调用窗口的Close()方法。这样,在Closing事件中,如果_isClosing为true,则不会取消关闭操作。
希望这个解决方案对你有帮助!
原文地址: http://www.cveoy.top/t/topic/E0D 著作权归作者所有。请勿转载和采集!