在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,则不会取消关闭操作。

希望这个解决方案对你有帮助!

wpf closing事件mvvm绑定CancelEventArgs 始终为null

原文地址: http://www.cveoy.top/t/topic/E0D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录