WPF何时决定重新查询命令是否可以执行?

WPF何时决定重新查询命令是否可以执行?,wpf,command,Wpf,Command,WPF何时重新查询命令是否可以执行? 调试器报告它经常发生。 但确切的条件是什么呢?TL;它的DR版本是当窗口上发生某些输入事件时调用CanExecute方法。主要有键盘和鼠标事件 因此,每当有人单击或按键时,所有的命令都会被CommandManager(通过引发事件)失效。这就是为什么保持CanExecute方法的快速性很重要的原因 也可以通过创建一个自定义的ICommand实现来处理此问题,该实现不对CanExecuteChanged事件使用CommandManager。我认为这取决于命令的

WPF何时重新查询命令是否可以执行? 调试器报告它经常发生。
但确切的条件是什么呢?

TL;它的DR版本是当窗口上发生某些输入事件时调用CanExecute方法。主要有键盘和鼠标事件

因此,每当有人单击或按键时,所有的命令都会被CommandManager(通过引发事件)失效。这就是为什么保持CanExecute方法的快速性很重要的原因


也可以通过创建一个自定义的
ICommand
实现来处理此问题,该实现不对
CanExecuteChanged
事件使用CommandManager。

我认为这取决于命令的类型。
RelayCommand
通常会在任何属性更改时重新查询
CanExecuteChanged()
(我认为只要在属性更改时运行),而
DelegateCommand
则不会,当属性依赖更改时,您必须手动提高
CanExecuteChanged
。此外,所有命令在绑定时都会重新计算,因此,隐藏然后显示窗口之类的操作通常会触发对主题的重新查询。这里的主题是:@CornelMarian工作链接: