在研究flex,as3,silverlight和wpf的MVC框架时,ICommand /命令的常见概念不断出现......任何人都可以解释使用ICommand / Execute()的优势吗?
我没有看到增值的是 - 为什么控制器不能将输入(即:点击事件)映射到模型内部的正确方法?我假设这是因为命令会给你带来一些东西 - 比如从控制器/控制器中的可能事件处理程序中删除业务逻辑。
THX。
答案 0 :(得分:8)
以下是一些演示值命令添加的案例:
<强>综述强>:
命令在业务逻辑和表示之间提供定义良好的接口。业务逻辑实现者不关心如何在视觉上实现某些动作(例如命令)。他只是提供动作实现和演示文稿查询动作状态的能力。他并不关心特定的UI元素(或多个元素)将触发该操作,执行该操作的确切能力如何反映在UI中,以及UI将来可能会发生什么变化。同时,演示设计师不需要了解有关事件处理程序,控制器等的任何信息。他有一个Command,他将其插入到他选择的任何UI元素(或元素)中,而无需转到C#代码。 。
答案 1 :(得分:1)
你在说什么控制器?
Silverlight和WPF中的命令概念用于将UI(通过大多数绑定)绑定到业务逻辑(无论是控制器/视图模型/模型/等)。
重点是将命令的功能移到UI之外。
实施例。 在应用程序中保存小部件可能总是以相同的方式完成。当然,您可以让用户更改名称,或者更改名称,但总体行为始终是相同的。现在,在您的应用程序中,您可能实际上通过许多不同的UI途径启动保存小部件,例如Page 1在右侧有一个按钮,用于将小部件保存在该页面上,第2页有一个顶部的菜单项将小部件保存在该页面上。用户界面不同,但行为保持不变。
您可以通过使用事件处理(例如抓取按钮上的click事件)来实现相同的目标,但现在您又回到了处理UI特定问题的上下文中。可以说,指挥有一个更清晰的分离。
答案 2 :(得分:1)
简单的答案是命令是可绑定的,而事件则不是。因此,如果您想要响应按钮点击事件,您可以:
由于MVVM的目标之一(这是Silverlight和WPF相对于MVC更常见的模式)是分离代码和UI。因此,如果采用第一种方法,最终会在视图中使用代码。如果采用第二种方法,则可以使用命令和绑定从视图中分离代码。