版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章导读:本章的主要内容是WPF的命令的相关知识。然后通过项目“实现窗体的清除功能程序”为导向,三个任务(创建使用简单命令的程序、创建使用复杂命令的程序和使用自定义命令的程序)为驱动,学习有关WPF命令的知识,本项目着力使学习者对WPF的命令有一定认识,初步掌握自定义命令的用法。项目四WPF命令—实现窗体的清除功能
——任务一创建使用简单命令的程序
定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作。一、任务描述:二、知识准备:1命令是什么2WPF的命令库3命令绑定
在这之前,我们学习了路由事件的相关内容,使用路由事件可以响应鼠标和键盘动作。但是在WPF应用程序中,功能被划分成很多任务,这些任务可以通过不同的动作和用户界面元素触发,包括主菜单、上下文菜单、键盘快捷键以及工作栏。在WPF中可以定义这些任务为命令,并将控件连接到命令,从而不需要重复的编写事件处理代码。更重要的是,当连接的命令不可用时,命令特性通过自动禁用控件来管理用户界面的状态。二、知识准备:WPF中命令的核心是System.Windows.Input.ICommand接口,所有命令对象都实现了此接口。ICommand接口非常简单,只包含两个方法和一个事件:二、知识准备:1、命令是什么?Execute方法:命令执行,或者说命令作用于目标之上。CanExecute方法:在执行之前来判断命令是否可被执行。CanExecuteChanged事件:当命令执行状态发生改变时,可激发此事件来通知其他对象。当创建自己的命令时,不能直接实现ICommand接口,而是要使用System.Windows.Input.RoutedCommand类,该类已经实现了ICommand接口,RoutedCommand在实现ICommand接口时,并未向其中添加任何逻辑,所有WPF命令都是RouteCommand类的实例。RoutedCommand类是WPF中唯一实现了ICommand接口的类,即所有WPF命令都是RoutedCommand类及其派生类的实例二、知识准备:1、命令是什么?WPF提供常用应用程序所用的命令集,常用的命令集包括:ApplicationCommands,ComponentCommands,NavigationCommands,MediaCommands和EditingCommands。
二、知识准备:2、WPF的命令库ApplicationCommands(应用程序命令):
提供一组标准的与应用程序相关的通用命令,包括剪贴板命令(如Copy、Cut和Paste)以及文档命令(如New、Open、Save、Close等)。具体信息见下表所示。2、WPF的命令库二、知识准备:名称说明CancelPrint获取表示“取消打印”命令的值Close获取表示“关闭”命令的值ContextMenu获取表示“上下文菜单”命令的值Copy获取表示“复制”命令的值Cut获取表示“剪切”命令的值Delete获取表示“删除”命令的值Find获取表示“查找”命令的值Help获取表示“帮助”命令的值New获取表示“新建”命令的值Open获取表示“打开”命令的值二、知识准备:名称说明Paste获取表示“粘贴”命令的值Print获取表示“打印”命令的值PrintPreview获取表示“打印预览”命令的值Properties获取表示“属性”命令的值Redo获取表示“重复”命令的值Replace获取表示“替换”命令的值Save获取表示“保存”命令的值SaveAs获取表示“另存为”命令的值SelectAll获取表示“全选”命令的值Stop获取表示“停止”命令的值Undo获取表示“撤消”命令的值二、知识准备:ComponentCommands(组件命令):
提供一组标准的由用户界面组件使用的命令,包括用于移动和选择内容的命令,这些命令和EditingCommands类中的一些命令相似(甚至完全相同)。这些命令具有预定义的按键输入笔势和
RoutedUICommand.Text
属性。包含MoveLeft、MoveRight、MoveUp等。2、WPF的命令库二、知识准备:NavigationCommands(导航命令):
提供一组标准的与导航相关的命令,包括BrowseHome、BrowseStop、BrowseStop等。具体信息信息略。MediaCommands(多媒体控制命令):
提供一组标准的与媒体相关的命令,包括Play、Pause、Stop等。具体信息信息略。EditingCommands(编辑/排版类命令):
提供一组标准的与编辑相关的命令,包括用于移动的命令(MoveToLineEnd、MoveLeftByWord和MoveUpByPage等),选择内容的命令(SelectToLineEnd、SelectLeftByWord),以及改变格式的命令(ToggleBold和ToggleUnderline)等。2、WPF的命令库二、知识准备:命令库中的命令总是可用的。触发它们的最简单方法是将它们关联到一个实现了ICommandSource接口的控件,其中包括继承自ButtonBase类的控件(Button和CheckBox等)、单独的ListBoxItem对象、Hyperlink以及MenuItem。 ICommandSource接口定义了三个属性,见下表:2、WPF的命令库二、知识准备:名称说明Command指向连接的命令。这是唯一必需的细节CommandParameter提供其他希望跟随命令发送的数据CommandTarget确定将要在其中执行命令的元素2、WPF的命令库二、知识准备:例如,下面的按钮使用Command属性连接到ApplicationCommands.New命令:<ButtonCommand=”ApplicationCommands.New”>New</Button>2、WPF的命令库二、知识准备:
当将命令关联到命令源时,就会看到命令源将会被自动禁用。例如,如果创建上一节中提到的New按钮,该按钮的颜色会变浅并且不能单击,就像将IsEnabled属性设置为false那样。这是因为按钮已经查询了命令的状态。而且由于命令还没有与之关联的绑定,所以它被认为是禁用的。3、命令绑定二、知识准备:为了改变这种状态,需要为命令创建绑定,以明确以下三件事情:2、WPF的命令库(1)当命令被触发时进行什么操作(2)如何确定命令是否能够被执行(这是可选的。只要提供了关联的事件处理程序,命令就总是可以)。(3)命令在何处起作用。例如,命令可以被限制在单个按钮中使用,也可以在整个窗口中使用。二、知识准备:下面的代码片段为New命令创建绑定。可将这些代码添加进窗口的构造函数中。CommandBindingbind=newCommandBinding(ApplicationCommands.New);bind.Executed+=NewComand_Executed;this.CommandBindings.Add(bind);2、WPF的命令库二、知识准备:上面创建的CommandBinding对象被添加到包含窗口的CommandBindings集合中。它通过事件冒泡进行工作。实际上,当按钮被单击时,CommandBinding.Executed事件从按钮冒泡到包含元素。尽管习惯上为窗口添加所有绑定,但CommandBindings属性实际上是在UIElement基类中定义的。这意味着任何元素都支持该属性。只是为了得到最大的灵活性,命令绑定通常被添加到顶级窗口。2、WPF的命令库二、知识准备:上面的代码包含了一个命名为NewComand_Executed的事件处理程序,该处理程序中包含一些显示命令源的简单代码:privatevoidNewComand_Executed(objectsender,ExecutedRoutedEventArgse){
MessageBox.Show(“命令源为:”+e.Source.ToString());}2、WPF的命令库二、知识准备:现在,如果运行应用程序,按钮是启用的。如果单击按钮,就会触发Executed事件,该事件冒泡至窗口,并被上面给出的NewComand()事件处理程序处理。这时,WPF会告知事件源(按钮)。运行如图所示。2、WPF的命令库二、知识准备:要实现剪切、复制、粘贴等功能,结合命令系统知识,我们可以在窗体上XAML中写入标签的Command,并赋值ApplicationCommands命令系统的命令值。三、任务分析:1.新建WPF项目,名称为SimpleCommand.xaml。窗体外观设计如图所示,代码自行编写。四、任务实施:2.各菜单项使用命令库ApplicationCommands中的相应命令,主要代码如下所示:
<MenuItemHeader="Edit"><MenuItemx:Name="menuCopy"Header="Copy"Command="ApplicationCommands.Copy"/><MenuItemx:Name="menuCut"Header="Cut"Command="ApplicationCommands.Cut"/><MenuItemx:Name="menuPaste"Header="Paste"Command="ApplicationCommands.Paste"/></MenuItem>四、任务实施:3.单击工具栏的“启动”按钮(或者按快捷键F5),即可看到效果。四、任务实施:4.Copy、Cut和Paste命令是剪贴板命令,此时看到Copy、Cut菜单项是灰色的,被自动禁用了,而Paste菜单项可以使用,是因为之前做过复制或剪切的操作。当在TextBox中输入内容或点击Paste输出内容到TextBox中,Copy及Cut就可以起作用了。如图所示。四、任务实施:此任务还有个细节,Cut、Copy和Paste命令被具有焦点的文本框处理。这一过程之所以能够无缝的工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年《工伤保险条例》知识竞赛试题及答案
- 四川省广元市剑阁县2023-2024学年七年级上学期期末考试英语试题(含答案)
- 慢阻肺稳定期社区健康监测随访策略
- 慢阻肺患者个体化肺康复依从性多学科管理策略
- 安全疲劳管理能力评估卷
- 延误责任协议
- 2026年事故隐患排查治理工作年度总结(4篇)
- 学校安全日巡查、周检查、月排查工作制度
- 2026年智能家居系统远程控制协议
- 慢病防控:社区慢性病防控的可持续发展模式
- 2025-2026学年北师大版高二数学上学期期末常考题之随机事件的条件概率
- 2025四川金融控股集团有限公司招聘16人笔试参考题库附带答案详解(3卷合一)
- 2025年人文常识竞赛题库及答案
- 新车交车课件
- 2025中国B2B市场营销现况白皮书
- 耳鼻喉科护士长2025年度述职报告
- 酒店工程全过程监理合同
- 无人机专业就业前景
- 2025考研公共卫生流行病学真题
- 2025年1月四川省普通高中学业水平合格性考试物理试题(含答案)
- 2025年护理专升本试卷及答案
评论
0/150
提交评论