RoutedUICommand
从代码隐藏手动执行自定义时,如下所示:
MyCommands.MyCommand.Execute(parameter, target)
我需要先调用CanExecute
方法还是在Execute
方法内部已经完成?
RoutedUICommand
从代码隐藏手动执行自定义时,如下所示:
MyCommands.MyCommand.Execute(parameter, target)
我需要先调用CanExecute
方法还是在Execute
方法内部已经完成?
不要假设 CanExecute 会被 Execute 调用。ICommand 的接口并不意味着它在调用 Execute 时调用 CanExecute,所以如果它只在 CanExecute 为 true 时执行对您很重要,只需自己检查即可。
此外,扫描 RoutedUICommand 的反编译代码,我看不到任何在 Execute 中检查 CanExecute 的地方。
确定何时调用 Execute/CanExecute 确实更多的是消费者的责任。
如果需要,您应该手动调用 CanExecute,Execute 不会检查它!
您不应该假设它CanExecute
是由Execute
方法调用的,因为没有什么可以强制执行该行为。所以IMO你应该称CanExecute
自己为