【问题标题】:Executing WPF routed commands manually手动执行 WPF 路由命令
【发布时间】:2009-06-15 14:20:08
【问题描述】:

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

MyCommands.MyCommand.Execute(parameter, target)

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

【问题讨论】:

    标签: c# wpf routed-commands


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您不应该假设 CanExecute 是由 Execute 方法调用的,因为没有什么可以强制执行该行为。所以海事组织你应该自己打电话给CanExecute

        【讨论】:

          猜你喜欢
          • 2013-12-02
          • 2015-05-11
          • 1970-01-01
          • 2010-09-26
          • 2020-04-24
          • 2011-04-19
          • 2015-04-06
          • 2011-05-27
          • 1970-01-01
          相关资源
          最近更新 更多