我们可以有一个对象引用,我们可以直接在 WPF 中调用它的方法。那我们为什么需要命令呢?
WPF 命令也意味着向对象发出命令。例如,A/C 可能会从各种来源(如 HAND、REMOTE CONTROL 等)获取启动命令。如果我们正在对 A/C 进行建模,那么要打开/关闭它,我们需要它的引用,否则我们将无法执行操作(调用它的方法)。
我们可以有一个对象引用,我们可以直接在 WPF 中调用它的方法。那我们为什么需要命令呢?
WPF 命令也意味着向对象发出命令。例如,A/C 可能会从各种来源(如 HAND、REMOTE CONTROL 等)获取启动命令。如果我们正在对 A/C 进行建模,那么要打开/关闭它,我们需要它的引用,否则我们将无法执行操作(调用它的方法)。
commanding
在 wpf 中解释本身就是一个巨大的话题,可能需要几页来写。在这里,我将坚持您在问题中给出的示例。首先,Command
(ICommand
接口的实现)就像给它的名字一样代表Action
要执行的。需要执行该操作的时间和地点取决于我们在何处以及如何使用它。命令的基本用途是将用户在 UI 上的操作传达给相应ViewModels
的 .
在您的示例中,如果您有 model name AC
,它具有 function Off()
。现在,您的 UI 可以有多个控件来提供此模型的渲染并对其执行操作。AC
让我们在屏幕上说您想通过click
onButton
或也使用ContextMenu
或 通过某些keyboard
快捷方式来关闭。首先,您需要将这些用户操作传达给包含您的模型 (AC) 的视图模型。您的 xaml 无法调用Off()
您的 AC,并且在代码后面执行它意味着为每个用户操作编写处理程序,并且从这些多个处理程序中您将调用相同的函数在这里您的命令将介入。您将只定义一个命令SwitchOffACCommand
并绑定它Command
的button
, MenuItem
. 您将只有一个处理程序Command
你会在哪里打电话AC.SwitchOff()
。如果您想在关闭 AC 之前修改或验证某些内容,您只需在一个地方进行即可。
只有对 MVVM 的含义有基本的了解,才能对 WPF 命令进行有意义的解释。这个话题太宽泛了,不能在几个帖子/答案中讨论。
这里有一些链接可以帮助您了解 WPF 命令的用途以及如何使用它们,以及一些关于 MVVM 的花絮:
MVVM
中的命令 WPF 命令和 WPF 中的事件有什么区别?
命令概述
了解 WPF
中的路由事件和命令 实现 MVVM 模式
Wikipedia:MVVM
命令是视图和“视图模型”之间的一种交互类型,不引入依赖关系。委托或事件处理程序将意味着视图、“视图模型”和/或“模型”之间的代码/编译/测试依赖关系——这是您在使用 MVVM 模式时要避免的。