我有一个工具栏,它有自己的视图模型。我使用命令绑定来处理视图模型中的点击。我使用了工具包附带的 codeplex 的命令类。当我关闭窗口并在同一应用程序中打开另一个窗口时,我看到先前关闭的窗口的方法的 CanExecute() 被调用。我已通过使用 CommandManager.InvalidateRequerySuggested() 确认 CommandManager 仍保留引用!CommandManager 应该持有弱引用,但由于某种原因它根本不释放委托。
我在这里做错了什么?我怎样才能克服这个问题?
发生这种情况的原因是 CommandManager 不知道它应该停止触发 CanExecute,直到处理程序被垃圾收集为止。
我遇到了同样的问题,我通过将窗口的 DataContext 设置为null关闭窗口后解决了它。假设命令绑定到 ViewModel(删除 DataContext 会取消注册 canExecute 事件处理程序),它可以正常工作。
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |