为什么在 CommandBinding.Executed 中使用过去时

Why past tense in CommandBinding.Executed

为什么命名为 Executed 而不是 ICommand 中的 Execute?

最后没关系,但我希望这不是任意的。

因为这是一个在命令被执行时触发的事件...好吧,已执行, 与 ICommand 不同,它是一种在调用时 执行 命令操作的方法。

.NET 的共同规范是事件使用分词(请注意,不是过去时),方法使用命令式。

如果你想关闭一个Window,你调用Window.Close()。如果您想处理 window 关闭时出现的事件(或者,将其放在这个问题的上下文中:“has been closed "),您订阅了 Window.Closed

同样(特别针对你的问题),如果你想执行一个命令,你调用 Command.Execute,而如果你想在命令执行时采取一些行动(在特定绑定上),您订阅了 CommandBinding.Executed.