Icommand
包含两个方法和一个事件。
这两个方法的作用很清楚,但是提供在 ICommand
中的事件我不明白它的作用。
什么时候会触发 CanExecuteChanged
事件?
下面的解释来自于MSDN,但我看不太懂。
如果命令管理器检测到命令源发生了更改,而这可能会使已被触发但尚未被命令绑定执行的命令无效,则会引发CanExecuteChanged事件。
请您简单解释一下这是什么意思吗?
谢谢......
该事件由命令引发,通知其使用者(即Button、MenuItem等)它的CanExecute属性可能已经改变。因此,如果焦点从一个TextBox移动到另一个TextBox,则您的命令可能需要启用/禁用。这些信息还需要传递给使用您的命令的任何控件。
总体而言,该事件只是重新公开了CommandManager.RequerySuggested事件。来自RoutedCommand类的说明:
public event EventHandler CanExecuteChanged {
add {
CommandManager.RequerySuggested += value;
}
remove {
CommandManager.RequerySuggested -= value;
}
}
当焦点移动、文本选择发生变化时,RequerySuggested事件会频繁触发。同时,也可以通过调用InvalidateRequerySuggested方法手动引发该事件。
CanExecuteChanged
,就像你所说的那样...我在ADD和REMOVE块中放置了两个书签,但无法在该位置获取指针... - Priteshadd
/remove
的默认实现管理订阅事件,例如CanExecuteChanged += value
对于add
。如果你像你所做的那样覆盖它们,客户端如何首次订阅事件? - mins