我最近有一个异常,因为关闭屏幕后调用了命令的CanExecute()
。
通过向该方法添加额外的检查可以很容易地修复它,但现在我担心如果未正确处理 View 模型,我的应用程序的生命周期性能。
我通过将命令存储为 ViewModel 中的属性来连接命令,然后在 xaml 中绑定(bind)到它们。
那么有人知道为什么关闭的窗口会继续调用 CanExecute()
方法吗?
最佳答案
发生这种情况的原因是 CommandManager 不知道它应该停止触发 CanExecute 直到处理程序被垃圾收集。
我有同样的问题,我已经通过在关闭窗口后立即将窗口的 DataContext 设置为 null
来解决它。假设命令绑定(bind)到 ViewModel(删除 DataContext 取消注册 canExecute 事件处理程序),它工作正常。
关于c# - 处理 ViewModels 和 CanExecute 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645415/