我们可以有一个对象引用,我们可以直接在WPF中调用它的方法。那为什么我们需要命令呢?
WPF命令也意味着向对象发出命令。例如,A / C可能会从HAND,REMOTE CONTROL等各种来源获得启动自身的命令。如果我们正在建模A / C,然后打开/关闭它我们需要它的引用,否则我们就无法执行操作(调用它上面的方法)。
答案 0 :(得分:0)
在wpf中解释commanding
本身就是一个很大的话题,可能需要几页才能编写。在这里,我将坚持你在问题中给出的例子。首先,Command
(ICommand
接口的实现)与名称一样好,代表要执行的Action
。需要执行该操作的时间和取决于我们在何处以及如何使用它。命令的基本用法是将UI上的用户操作传递给相应的ViewModels
。
在您的示例中,如果您的模型名称AC
具有函数Off()
。现在,您的UI可以有多个控件,提供此模型的呈现并对其执行操作。让我们在屏幕上说你想在AC
上click
或Button
或某个ContextMenu
快捷方式关闭keyboard
。首先,您需要将这些用户操作传达给包含模型(AC)的视图模型。你的xaml不能在你的AC上调用Off()
并且在后面的代码中执行它将意味着为每个useraction编写处理程序,并且从那些多个处理程序中你将调用相同的函数
在这里,您的命令将介入。您将只定义一个命令SwitchOffACCommand
并绑定Command
button
,MenuItem
。
您将只有Command
的一个处理程序,您将在其中调用AC.SwitchOff()
。如果您想在关闭AC之前修改或验证某些内容,您只需在一个地方进行修改或验证。
答案 1 :(得分:0)
如果您对MVVM的含义有基本的了解,则只能对WPF命令进行有意义的解释。该主题过于宽泛,无法在一些帖子/答案中进行讨论。
这里有一些链接可以帮助您理解WPF命令的用途以及如何使用它们,以及一些关于MVVM的花絮:
Commands in MVVM
What is the difference between WPF Command and Event in WPF?
Commanding Overview
Understanding Routed Events and Commands In WPF
Implementing the MVVM Pattern
Wikipedia: MVVM
命令是视图和“视图模型”之间的一种交互,而不引入依赖关系。代理或事件处理程序意味着View,“View Model和/或Model”之间的代码/编译/测试依赖关系 - 在使用MVVM模式时要避免的事情。