C#:指挥的附加值是多少?
在研究flex、as3、silverlight和wpf的MVC框架时。。。一个常见的ICommand/commanding概念不断出现。。。有人能解释一下使用ICommand/Execute()的好处吗 我看不到增加值的地方是——为什么控制器不能将输入(即:单击事件)映射到模型内部的正确方法?我假设这是因为命令为您带来了一些东西,比如从控制器/控制器中的潜在事件处理程序中删除业务逻辑C#:指挥的附加值是多少?,c#,wpf,silverlight,actionscript-3,C#,Wpf,Silverlight,Actionscript 3,在研究flex、as3、silverlight和wpf的MVC框架时。。。一个常见的ICommand/commanding概念不断出现。。。有人能解释一下使用ICommand/Execute()的好处吗 我看不到增加值的地方是——为什么控制器不能将输入(即:单击事件)映射到模型内部的正确方法?我假设这是因为命令为您带来了一些东西,比如从控制器/控制器中的潜在事件处理程序中删除业务逻辑 Thx.你在说什么控制器 Silverlight和WPF中的指挥概念用于将UI与业务逻辑(无论是控制器/视图模型
Thx.你在说什么控制器 Silverlight和WPF中的指挥概念用于将UI与业务逻辑(无论是控制器/视图模型/模型/等等)绑定在一起(主要通过绑定) 就是要将命令的功能移到UI之外 例如。在应用程序中保存小部件的方式可能总是相同的。当然,您可以让用户更改名称,或者这个或那个,但总体行为始终是相同的。现在,在您的应用程序中,您可能实际上通过许多不同的UI途径来启动保存小部件,例如第1页的右侧有一个按钮将小部件保存在该页上,第2页的顶部有一个菜单项将小部件保存在该页上。UI不同,但行为保持不变
通过使用事件处理(例如抓取按钮上的单击事件),您可以实现相同的目标,但现在您又回到了处理特定于UI的问题的上下文中。可以说,命令具有更清晰的分离。简单的答案是命令是可绑定的,而事件是不可绑定的。因此,如果您想响应按钮单击事件,您可以:
因为MVVM的目标之一(这是Silverlight和WPF比MVC更常见的模式)是分离代码和UI。因此,如果您采用第一种方法,您最终会在视图中看到代码。如果采用第二种方法,则可以使用命令和绑定将代码与视图分离 以下几个案例演示了命令添加的值:
命令在业务逻辑和表示之间提供了定义良好的接口。业务逻辑实现者不关心某些操作(例如命令)在视觉上如何实现。他只提供了操作实现和一种表示查询操作状态的能力。他不关心什么特定的UI元素(或多个元素)将触发该操作,执行该操作的能力在UI中的具体反映,以及UI将来可能会发生什么变化。同时,演示设计器不需要了解任何有关事件处理程序、控制器等的信息。他有一个命令,可以将它插入到他选择的任何UI元素(或多个元素)中,而根本不需要使用C代码 这是一个让你问“是的,为什么每个人都这么做?”的问题,我期待着一个全面的答案……前两个答案对我来说并不令人满意,等待更多+1的明确具体例子来说明为什么指挥是一种好的做法。我自己也使用它,但我经常发现支持它的人给出了一般的理由,却忽略了一个真实例子的价值。