c# - 处理 ViewModels 和 CanExecute 处理程序

标签 c# wpf

我最近有一个异常,因为关闭屏幕后调用了命令的CanExecute()

通过向该方法添加额外的检查可以很容易地修复它,但现在我担心如果未正确处理 View 模型,我的应用程序的生命周期性能。

我通过将命令存储为 ViewModel 中的属性来连接命令,然后在 xaml 中绑定(bind)到它们。

那么有人知道为什么关闭的窗口会继续调用 CanExecute() 方法吗?

最佳答案

发生这种情况的原因是 CommandManager 不知道它应该停止触发 CanExecute 直到处理程序被垃圾收集。

我有同样的问题,我已经通过在关闭窗口后立即将窗口的 DataContext 设置为 null 来解决它。假设命令绑定(bind)到 ViewModel(删除 DataContext 取消注册 canExecute 事件处理程序),它工作正常。

关于c# - 处理 ViewModels 和 CanExecute 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645415/

相关文章:

c# - WPF找不到命名空间

c# - 如何在 TensorFlowSharp 中 reshape 张量

c# - 如何检查可用磁盘空间?

C# WPF - 如何在运行后自动刷新 UI

wpf - 自定义 WPF TreeView

c# - WPF 应用程序 mp3 声音文件的相对路径

c# - 使用 ViewModel 中的多个变量绑定(bind) WPF 控制可见性

c# - 响应门控下一条消息发送,使用 Rx

c# - Wpf 绑定(bind) Observablecollection 和 RelayCommand

c# - TcpClient 和 UdpClient 抛出错误