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