手动执行WPF路由命令

时间:2009-06-15 14:20:09

标签: c# wpf routed-commands

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

MyCommands.MyCommand.Execute(parameter, target)

我是否需要先调用CanExecute方法,还是已在Execute方法中完成?

3 个答案:

答案 0 :(得分:10)

不要假设使用Execute调用CanExecute。 ICommand的接口并不意味着它在调用Execute时调用CanExecute,因此如果只在CanExecute为true时执行它很重要,那么只需自己检查即可。

另外,扫描RoutedUICommand的解压缩代码,我没有看到在Execute中检查CanExecute的任何地方。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您不应该假设CanExecute方法调用Execute,因为没有任何内容可以强制执行该行为。所以IMO你应该自己打电话给CanExecute