WPF新手村教程第六篇:如何准备新手村BOSS战中的命令?

摘要:WPF个人文档(六)—— 命令 命令最大的作用就是前后端解耦,它并不是事件的上位替代品!!! 一.概念 我们先来看看命令这两个字,在汉语上的词意 命令:一种权威性的指示,通常指上级对下级的口头或书面指示,要求其执行某项任务或采取某种行动 命
WPF个人文档(六)—— 命令 命令最大的作用就是前后端解耦,它并不是事件的上位替代品!!! 一.概念 我们先来看看命令这两个字,在汉语上的词意 命令:一种权威性的指示,通常指上级对下级的口头或书面指示,要求其执行某项任务或采取某种行动 命令往往具有明确的目标和要求,并带有一定的强制性 然后我们再来看看WPF中命令的概念 命令:代指一种明确的指令或者要求,用于向某个目标传递指定的操作或者行为 因此,只从效果上来看,命令和事件的效果视乎一样,但是,命令 ≠ 事件 WPF中的命令是一种行为抽象机制,它将UI触发、执行逻辑和作用目标解耦,并通过CanExecute实现状态驱动的交互控制 命令是对"行为"的对象化封装 它将“触发者”、“执行逻辑”和“作用对象”解耦(前后端解耦),并提供“是否可执行”的状态控制机制(行为约束) 命令(Command)= 把 "一个动作" 抽象成 一个对象 在现实生活中,假设你在对一个AI发起了一个命令,那么我们的流程是 编辑执行命令内容 -> 选择命令目标 -> 告诉AI执行什么操作 -> 行为约束 # 其中涉及到 命令发出者 命令接收者 命令内容 命令执行者 开始执行命令 完成执行内容 汇报执行结果 而我们使用的命令,和这个流程其实非常相似(参考小结中的流程图) 二.命令的四个概念 命令源(Command Source) ↓ # 触发 命令(Command) ↓ # 查找 命令绑定(Command Binding) ↓ # 执行 命令目标(Command Target) 1.0 命令(Command) —— 继承ICommand接口 本质上其实就是实现了一个ICommand对象 主要负责2件事情 Execute(执行逻辑) CanExecute(能不能执行) 1.1 预定义命令库✳ 预定义命令库:WPF内置的一组标准命令(已经实现好的 ICommand) 不用写 RelayCommand了,开袋即食,别造轮子了 预定义命令 = 官方帮你定义好的“行为规范”,而不是具体实现 常用的命令库(预定义)有五个静态类 ApplicationCommands # 应用通用 NavigationCommands # 导航(页面跳转) EditingCommands # 文本编辑 ComponentCommands # 组件 MediaCommands # 媒体控制 # 使用时,请随用随查,而且除了第一个,基本上不怎么使用,了解即可 # 使用频率大概是: ApplicationCommands >>> EditingCommands > NavigationCommands > MediaCommands > ComponentCommands 示例代码: 新建一个操作,这个操作绑定到逻辑CommandBinding_Executed上 <Window.CommandBindings> <CommandBinding Command="ApplicationCommands.New" Executed="CommandBinding_Executed"/> </Window.CommandBindings> 下面大致列举了一部分常用的预定义命令: 随用随查,别背,没用,顶多记一下ApplicationCommands通用类的几个,毕竟大多数都用不上 (1)ApplicationCommands应用通用类 命令 作用 常见场景 Copy 复制选中内容 TextBox / 数据编辑 Cut 剪切选中内容 文本编辑 Paste 粘贴剪贴板内容 输入框 Save 保存数据 文件/表单 SaveAs 另存为 文件系统 Open 打开文件 文件操作 New 新建内容 编辑器 Undo 撤销操作 编辑器 Redo 重做操作 编辑器 Delete 删除选中项 列表/文本 Print 打印内容 报表/文档 (2)NavigationCommands导航(页面跳转)类 命令 作用 常见场景 Back 返回上一页 页面导航 Forward 前进 页面导航 Refresh 刷新当前页面 Web/数据页 BrowseHome 返回首页 应用
阅读全文