2

RoutedUICommand从代码隐藏手动执行自定义时,如下所示:

MyCommands.MyCommand.Execute(parameter, target)

我需要先调用CanExecute方法还是在Execute方法内部已经完成?

4

3 回答 3

10

不要假设 CanExecute 会被 Execute 调用。ICommand 的接口并不意味着它在调用 Execute 时调用 CanExecute,所以如果它只在 CanExecute 为 true 时执行对您很重要,只需自己检查即可。

此外,扫描 RoutedUICommand 的反编译代码,我看不到任何在 Execute 中检查 CanExecute 的地方。

确定何时调用 Execute/CanExecute 确实更多的是消费者的责任。

于 2009-06-15T14:34:07.590 回答
1

如果需要,您应该手动调用 CanExecute,Execute 不会检查它!

于 2009-06-15T14:34:32.520 回答
0

您不应该假设它CanExecute是由Execute方法调用的,因为没有什么可以强制执行该行为。所以IMO你应该称CanExecute自己为

于 2009-06-15T14:36:03.937 回答