gpt4 book ai didi

C#:命令增加的值是什么?

转载 作者:行者123 更新时间:2023-11-30 19:22:09 24 4
gpt4 key购买 nike

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

我看不到增加的值(value)的地方是 - 为什么 Controller 不能将输入(即:单击事件)映射到模型内部的正确方法?我假设这是因为命令会给你带来一些东西——比如从 Controller 中删除业务逻辑/ Controller 中可能的事件处理程序。

谢谢。

最佳答案

这里有几个案例演示了值命令添加:

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

总结:

命令在业务逻辑和表示之间提供了定义良好的接口(interface)。业务逻辑实现者不关心如何在视觉上实现某些 Action (例如命令)。他只是简单地提供 Action 实现和演示查询 Action 状态的能力。他不关心什么特定的 UI 元素(或多个元素)会触发该操作,执行该操作的能力(或能力)将如何准确地反射(reflect)在 UI 中,以及 UI 将来可能会经历什么变化。同时,演示文稿设计师不需要了解任何有关事件处理程序、 Controller 等的知识。他有一个命令,他可以将它插入到他选择的任何 UI 元素(或多个元素)中,而根本不需要转到 C# 代码.

关于C#:命令增加的值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1669196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com