C#:指挥的增值是多少?

Ska*_*ful 2 c# silverlight wpf actionscript-3

在研究flex,as3,silverlight和wpf的MVC框架时...... ICommand /命令的常见概念不断出现......任何人都可以解释使用ICommand/Execute()的优势吗?

我没有看到增值的是 - 为什么控制器不能将输入(即:点击事件)映射到模型内部的正确方法?我假设这是因为命令购买了一些东西 - 比如从控制器/控制器中的可能事件处理程序中删除业务逻辑.

谢谢.

PL.*_*PL. 8

以下是一些演示值命令添加的案例:

  1. 假设您有一个带有文本框和提交按钮的简单表单.只有在文本框中输入了一些文本时,才需要启用按钮.使用命令,您所要做的就是实现CanExecute方法(根据文本字段中的值返回true或false)框架将相应地自动禁用/启用按钮.使用代码隐藏(或控制器)方法,您必须手动编写代码执行启用/禁用按钮.
  2. 假设您以后决定不喜欢您使用的按钮控件,并决定从不同的库切换到新控件(即按钮或更具异国情调的东西).您所要做的就是在XAML中进行更改.任何支持Command绑定的控件都知道该怎么做.在代码隐藏方法中,您还可以修改按钮单击处理程序(因为新控件可能需要不同的事件处理程序签名)
  3. 假设您稍后决定在文本字段中添加一个复选框,该复选框可以直观地向用户指示该字段的内容是否可接受.您所要做的就是将这个新复选框绑定到命令的CanExecute,现在您已经有两个控件可以自动更改其视觉外观,具体取决于表单是否可提交.使用代码隐藏方法(或控制器)添加新控件将需要添加更多代码.
  4. 假设你想测试你的行动.由于命令不依赖于任何可视元素,并且不需要它们,因此您可以轻松编写单元测试,无需用户单击任何按钮或输入任何文本.使用控制器方法,您可以模拟控制器的事件,并模拟视图.

总结:

命令在业务逻辑和表示之间提供定义良好的接口.业务逻辑实现者并不关心如何实现某些操作(例如命令).他只是提供动作实现和演示文稿查询动作状态的能力.他并不关心特定的UI元素(或多个元素)将触发该操作,执行该操作的确切能力如何反映在UI中,以及UI将来可能会发生什么变化.同时,演示设计师不需要了解有关事件处理程序,控制器等的任何信息.他有一个Command,他将其插入到他选择的任何UI元素(或元素)中,而无需转到C#代码. .