命令与直接对象方法调用

时间:2013-10-18 07:04:58

标签: wpf

我们可以有一个对象引用,我们可以直接在WPF中调用它的方法。那为什么我们需要命令呢?

WPF命令也意味着向对象发出命令。例如,A / C可能会从HAND,REMOTE CONTROL等各种来源获得启动自身的命令。如果我们正在建模A / C,然后打开/关闭它我们需要它的引用,否则我们就无法执行操作(调用它上面的方法)。

2 个答案:

答案 0 :(得分:0)

在wpf中解释commanding本身就是一个很大的话题,可能需要几页才能编写。在这里,我将坚持你在问题中给出的例子。首先,CommandICommand接口的实现)与名称一样好,代表要执行的Action。需要执行该操作的时间和取决于我们在何处以及如何使用它。命令的基本用法是将UI上的用户操作传递给相应的ViewModels

在您的示例中,如果您的模型名称AC具有函数Off()。现在,您的UI可以有多个控件,提供此模型的呈现并对其执行操作。让我们在屏幕上说你想在ACclickButton或某个ContextMenu快捷方式关闭keyboard。首先,您需要将这些用户操作传达给包含模型(AC)的视图模型。你的xaml不能在你的AC上调用Off()并且在后面的代码中执行它将意味着为每个useraction编写处理程序,并且从那些多个处理程序中你将调用相同的函数 在这里,您的命令将介入。您将只定义一个命令SwitchOffACCommand并绑定Command buttonMenuItem。 您将只有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模式时要避免的事情。