wpf命令1

上传人:今*** 文档编号:106671612 上传时间:2019-10-15 格式:PPT 页数:30 大小:1,018.50KB
返回 下载 相关 举报
wpf命令1_第1页
第1页 / 共30页
wpf命令1_第2页
第2页 / 共30页
wpf命令1_第3页
第3页 / 共30页
wpf命令1_第4页
第4页 / 共30页
wpf命令1_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《wpf命令1》由会员分享,可在线阅读,更多相关《wpf命令1(30页珍藏版)》请在金锄头文库上搜索。

1、,项目四 WPF命令实现窗体的清除功能,讲师 刘振东,本章导读:,本章的主要内容是WPF的命令的相关知识。然后通过项目“实现窗体的清除功能程序”为导向,三个任务(创建使用简单命令的程序、创建使用复杂命令的程序和使用自定义命令的程序)为驱动,学习有关WPF命令的知识,本项目着力使学习者对WPF的命令有一定认识,初步掌握自定义命令的用法。, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,项目四 WPF命令实现窗体的清除功能 任务一 创建使用简单命令的程序,定义一系列菜单,执行对窗体中文本框的复制、剪切、粘贴操作。,一、任务描述:, ht

2、tp:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,二、知识准备:,在这之前,我们学习了路由事件的相关内容,使用路由事件可以响应鼠标和键盘动作。但是在WPF应用程序中,功能被划分成很多任务,这些任务可以通过不同的动作和用户界面元素触发,包括主菜单、上下文菜单、键盘快捷键以及工作栏。在WPF中可以定义这些任务为命令,并将控件连接到命令,从而不需要重复的编写事件处理代码。更重要的是,当连接的命令不可用时,命令特性通过自动禁用控件来管理用户界面的状态。,二、知识准备:,WPF中命令的核心是System.Windows.Input.ICommand接

3、口,所有命令对象都实现了此接口。ICommand接口非常简单,只包含两个方法和一个事件:,二、知识准备:,1、命令是什么?,Execute方法:命令执行,或者说命令作用于目标之上。 CanExecute方法:在执行之前来判断命令是否可被执行。 CanExecuteChanged事件:当命令执行状态发生改变时,可激发此事件来通知其他对象。,当创建自己的命令时,不能直接实现ICommand接口,而是要使用System.Windows.Input.RoutedCommand类,该类已经实现了ICommand接口,RoutedCommand在实现ICommand接口时,并未向其中添加任何逻辑,所有WP

4、F命令都是RouteCommand类的实例。RoutedCommand类是WPF中唯一实现了ICommand接口的类,即所有WPF命令都是RoutedCommand类及其派生类的实例,二、知识准备:,1、命令是什么?,WPF提供常用应用程序所用的命令集,常用的命令集包括:ApplicationCommands, ComponentCommands, NavigationCommands, MediaCommands和EditingCommands。,二、知识准备:,2、WPF的命令库,ApplicationCommands(应用程序命令): 提供一组标准的与应用程序相关的通用命令,包括剪贴板命

5、令(如Copy、Cut和Paste)以及文档命令(如New、Open、Save、Close等)。具体信息见下表所示。,2、WPF的命令库,二、知识准备:,二、知识准备:, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,二、知识准备:,ComponentCommands(组件命令): 提供一组标准的由用户界面组件使用的命令,包括用于移动和选择内容的命令,这些命令和EditingCommands类中的一些命令相似(甚至完全相同)。这些命令具有预定义的按键输入笔势和 RoutedUICommand.Text 属性。包含MoveLeft、M

6、oveRight、MoveUp等。,2、WPF的命令库,二、知识准备:,NavigationCommands(导航命令): 提供一组标准的与导航相关的命令,包括BrowseHome、BrowseStop、BrowseStop等。具体信息信息略。 MediaCommands(多媒体控制命令): 提供一组标准的与媒体相关的命令,包括Play、Pause、Stop等。具体信息信息略。 EditingCommands(编辑/排版类命令): 提供一组标准的与编辑相关的命令,包括用于移动的命令(MoveToLineEnd、MoveLeftByWord和MoveUpByPage等),选择内容的命令(Sele

7、ctToLineEnd、SelectLeftByWord),以及改变格式的命令(ToggleBold和ToggleUnderline)等。,2、WPF的命令库,二、知识准备:,命令库中的命令总是可用的。触发它们的最简单方法是将它们关联到一个实现了ICommandSource接口的控件,其中包括继承自ButtonBase类的控件(Button和CheckBox等)、单独的ListBoxItem对象、Hyperlink以及MenuItem。 ICommandSource接口定义了三个属性,见下表:,2、WPF的命令库,二、知识准备:,2、WPF的命令库,二、知识准备:,例如, 下面的按钮使用Com

8、mand属性连接到ApplicationCommands.New命令:,New,2、WPF的命令库,二、知识准备:,当将命令关联到命令源时,就会看到命令源将会被自动禁用。 例如,如果创建上一节中提到的New按钮,该按钮的颜色会变浅并且不能单击,就像将IsEnabled属性设置为false那样。这是因为按钮已经查询了命令的状态。而且由于命令还没有与之关联的绑定,所以它被认为是禁用的。,3、命令绑定,二、知识准备:,为了改变这种状态,需要为命令创建绑定,以明确以下三件事情:,2、WPF的命令库,(1)当命令被触发时进行什么操作 (2)如何确定命令是否能够被执行(这是可选的。只要提供了关联的事件处理

9、程序,命令就总是可以)。 (3)命令在何处起作用。例如,命令可以被限制在单个按钮中使用,也可以在整个窗口中使用。,二、知识准备:,下面的代码片段为New命令创建绑定。可将这些代码添加进窗口的构造函数中。,CommandBinding bind = new CommandBinding(ApplicationCommands.New); bind.Executed += NewComand_Executed; this.CommandBindings.Add(bind);,2、WPF的命令库,二、知识准备:,上面创建的CommandBinding对象被添加到包含窗口的CommandBinding

10、s集合中。它通过事件冒泡进行工作。实际上,当按钮被单击时,CommandBinding.Executed事件从按钮冒泡到包含元素。 尽管习惯上为窗口添加所有绑定,但CommandBindings属性实际上是在UIElement基类中定义的。这意味着任何元素都支持该属性。只是为了得到最大的灵活性,命令绑定通常被添加到顶级窗口。,2、WPF的命令库,二、知识准备:,上面的代码包含了一个命名为NewComand_Executed的事件处理程序,该处理程序中包含一些显示命令源的简单代码:,private void NewComand_Executed(object sender, ExecutedRo

11、utedEventArgs e ) MessageBox.Show(“命令源为: ”+e.Source.ToString() ); ,2、WPF的命令库,二、知识准备:,现在,如果运行应用程序,按钮是启用的。如果单击按钮,就会触发Executed事件,该事件冒泡至窗口,并被上面给出的NewComand()事件处理程序处理。这时,WPF会告知事件源(按钮)。运行如图所示。,2、WPF的命令库,二、知识准备:,要实现剪切、复制、粘贴等功能,结合命令系统知识,我们可以在窗体上XAML中写入标签的Command,并赋值ApplicationCommands命令系统的命令值。,三、任务分析:, http

12、:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,1.新建WPF项目,名称为SimpleCommand.xaml。窗体外观设计如图所示,代码自行编写。,四、任务实施:,2.各菜单项使用命令库ApplicationCommands中的相应命令,主要代码如下所示:,四、任务实施:,3. 单击工具栏的“启动”按钮(或者按快捷键F5),即可看到效果。,四、任务实施:,4.Copy、Cut和Paste命令是剪贴板命令,此时看到Copy、Cut菜单项是灰色的,被自动禁用了,而Paste菜单项可以使用,是因为之前做过复制或剪切的操作。当在TextBox中输入

13、内容或点击Paste输出内容到TextBox中,Copy及Cut就可以起作用了。如图所示。,四、任务实施:,此任务还有个细节,Cut、Copy和Paste命令被具有焦点的文本框处理。这一过程之所以能够无缝的工作,是因为Menu类(或ToolBar控件)提供了一些内置逻辑,可以将它的子元素的CommandTarget属性自动设置为具有焦点的控件(从技术角度看,Menu控件一直在关注着其父元素,即窗口,并在上下文中查找最近具有焦点的控件,即文本框)。,四、任务实施:,1介绍了WPF的命令概念及其命令库。 2演示了最简单的命令的使用过程。 3. 如果程序中需要诸如Open、Save、Play、Stop等标准命令时,没必要自己声明,直接拿命令库来用即可。,五、任务小结:, http:/www.xunchi- http:/www.51xiu.org/ http:/www.gz- ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号