WPF应用开发项目教程课件4.3 WPF命令_第1页
WPF应用开发项目教程课件4.3 WPF命令_第2页
WPF应用开发项目教程课件4.3 WPF命令_第3页
WPF应用开发项目教程课件4.3 WPF命令_第4页
WPF应用开发项目教程课件4.3 WPF命令_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目四WPF命令—实现窗体的清除功能

——任务三创建使用自定义命令的程序

实现的是点击浅蓝色控件时,弹出对话框,显示文本框里面的内容。运行效果如图。一、任务描述:二、知识准备:1自定义命令

一般情况下,程序中使用与逻辑无关的RoutedCommand就足够了,但为了使程序的结构更简洁,我们常常要定义自己的命令。WPF的命令式实现了Icommand接口的类。Icommand只包含两个方法和一个事件,先看一下ICommand接口的原型:二、知识准备:1、自定义命令eventEventHandler

CanExecuteChanged;bool

CanExecute(objectparameter);voidExecute(objectparameter);二、知识准备:1、自定义命令其中第一个事件为,当命令可执行状态发生改变时,可以激化此事件来通知其他对象。另外两个方法在上面已经用过同名的,在此不做重复说明。

下面开始实现一个自定义直接实现ICommand接口的命令,实现点击源控件,清除目标控件的内容。

从ICommand接口开始,实现一个自定义命令。该自定义命令不再需要CommandBindings来进行命令绑定,在命令里面实现了相关的业务处理,使代码更清晰。三、任务分析:从ICommand接口开始,实现一个自定义命令。该自定义命令不再需要CommandBindings来进行命令绑定,在命令里面实现了相关的业务处理,使代码更清晰。1.新建WPF项目,名称为DefineCommand。右键单击项目,添加类文件,名称为MyCommand。2.继承ICommand,实现自定义MyCommand。

该命令功能为弹出对话框,显示文本框的内容。这里将命令目标作为Execute的参数。三、任务实施:注意,此时需要usingSystem.Windows.Input;对ICommand进行解析。三、任务实施:classMyCommand:ICommand{publiceventEventHandler

CanExecuteChanged;publicbool

CanExecute(objectparameter){thrownewSystem.NotImplementedException();}三、任务实施:publicvoidExecute(objectparameter){

TextBox

txtCmd=parameterasTextBox;if(cmd!=null){

MessageBox.Show(txtCmd.Text);}}}3.右键单击项目,新建类文件,名称为MyCommandSource。创建命令源。

自定义命令需要有命令源来发送他们,通过继承ICommandSource来实现命令源。下面通过控件的OnMouseLeftButtonUp事件来发送命令。三、任务实施:classMyCommandSource:System.Windows.Controls.TextBlock,ICommandSource{//自定义命令源}publicICommandCommand{get;set;}publicobjectCommandParameter{get;set;}publicIInputElement

CommandTarget{get;set;}//重写点击处理函数protectedoverridevoidOnMouseLeftButtonUp(MouseButtonEventArgse){

base.OnMouseLeftButtonUp(e);if(this.CommandTarget!=null){this.Command.Execute(this.CommandTarget);}}三、任务实施:4.使用命令源进行界面布局。

界面主要控件为一个文本框(作为命令目标)和命令源MyCommandSource。如果希望在XAML中使用自定义的控件,首先需要将.NET名称空间映射为一个XAML名称空间。此任务中,自定义的命令类位于DefineCommand名称空间(对于名为DefineCommand的项目,这是默认的名称空间),应当添加如下的名称空间映射:三、任务实施:xmlns:local="clr-namespace:DefineCommand"<Window……

xmlns:local="clr-namespace:DefineCommand"Title="MainWindow"Height="350"Width="525"><BorderBorderBrush="LawnGreen"BorderThickness="2"><Grid><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions>三、任务实施:<TextBoxText="自定义命令测试,请输入内容:"TextAlignment="Center"VerticalAlignment="Center"FontSize="18"/><TextBoxx:Name="myTxt"Height="40"Margin="18"Grid.Column="1"Grid.Row="0"/><local:MyCommandSourcex:Name="mySource"Grid.Row="1"Grid.ColumnSpan="2"Text="点击此色块自定义命令测试"FontSize="23"TextAlignment="Center"VerticalAlignment="Center"Height="110"Width="410"Background="LightBlue"/></Grid></Border></Window>三、任务实施:5.命令关联,为命令源附上MyCommand命令。

{

InitializeComponent();//由于命令具有"全局性",//所以一般声明在静态全局的地方,供全局使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论