【发布时间】:2009-06-15 14:20:08
【问题描述】:
从代码隐藏手动执行自定义RoutedUICommand 时,如下所示:
MyCommands.MyCommand.Execute(parameter, target)
我需要先调用CanExecute 方法还是已经在Execute 方法中完成?
【问题讨论】:
标签: c# wpf routed-commands
从代码隐藏手动执行自定义RoutedUICommand 时,如下所示:
MyCommands.MyCommand.Execute(parameter, target)
我需要先调用CanExecute 方法还是已经在Execute 方法中完成?
【问题讨论】:
标签: c# wpf routed-commands
不要假设 CanExecute 会被 Execute 调用。 ICommand 的接口并不意味着它在调用 Execute 时调用 CanExecute,所以如果它只在 CanExecute 为真时执行对您很重要,只需自己检查即可。
另外,扫描 RoutedUICommand 的反编译代码时,我没有看到任何在 Execute 中检查 CanExecute 的地方。
确定何时调用 Execute/CanExecute 确实是消费者的更多责任。
【讨论】:
如果需要,你应该手动调用 CanExecute,Execute 不会检查它!
【讨论】:
您不应该假设 CanExecute 是由 Execute 方法调用的,因为没有什么可以强制执行该行为。所以海事组织你应该自己打电话给CanExecute
【讨论】: