Icommand
包含两个方法和一个事件
这两种方法的作用很清楚,但我不明白ICommand
中提供的事件的作用。
CanExecuteChanged
事件何时引发?
下面的解释在MSDN上,但我无法理解。
如果命令管理器集中指挥操作检测命令的更改可能使已引发但未引发的命令无效的源仍然由命令绑定执行。
你能简单地解释一下吗?
谢谢。。。。。。
此事件由命令引发,用于通知其使用者(即Button、MenuItem)其CanExecute属性可能已更改。因此,如果焦点从一个TextBox移动到另一个,您的命令可能需要启用/禁用。还需要使用命令将此信息传递给任何控件。
通常,此事件只是重新导出CommandManager.RequeryProposed事件。从RoutedCommand类:
public event EventHandler CanExecuteChanged {
add {
CommandManager.RequerySuggested += value;
}
remove {
CommandManager.RequerySuggested -= value;
}
}
RequerySuggested事件经常被触发,因为焦点被移动,文本选择被更改。也可以通过调用InvalidateRequerySuggested手动引发此问题。
ICommand
的CanExecute
方法更改时,会引发CanExecuteChanged
在某些第三方库中,如果CanExecute
参数引发PropertyChanged
事件,则也会引发CanExecuteChanged
事件。例如,如果CanExecute
参数引发PropertyChanged
事件,MVVM Light Toolkit的RelayCommand
会引发CanExecuteChanged
事件,而Prism的DelegateCommand
则不会。