从代码隐藏中手动执行自定义RoutedUICommand
时,如下所示:
MyCommands.MyCommand.Execute(parameter, target)
我是否需要先调用CanExecute
方法,还是已在Execute
方法中完成?
答案 0 :(得分:10)
不要假设使用Execute调用CanExecute。 ICommand的接口并不意味着它在调用Execute时调用CanExecute,因此如果只在CanExecute为true时执行它很重要,那么只需自己检查即可。
另外,扫描RoutedUICommand的解压缩代码,我没有看到在Execute中检查CanExecute的任何地方。
确定何时调用Execute / CanExecute确实更有消费者的责任。
答案 1 :(得分:1)
如果需要,您应该手动调用CanExecute,执行不会检查它!
答案 2 :(得分:0)
您不应该假设CanExecute
方法调用Execute
,因为没有任何内容可以强制执行该行为。所以IMO你应该自己打电话给CanExecute