命令模型的主要元素:

1、命令

2、命令绑定:命令连接到相关的应用程序逻辑

3、命令源:命令源触发命令,

4、命令目标:应用程序逻辑。

----------------------------------------------------------------

ICommand接口

命令模型的核心是System.Windows.Input.ICommand接口。

public interface ICommand
{
event EventHandler CanExecuteChanged; //当命令状态改变时,引发该事件。 bool CanExecute(object parameter); //此方法返回命令状态,如果命令可用则返回true,不可用则返回false。 void Execute(object parameter); //定义在调用此命令时要调用的方法。
}

该接口包含两个方法和一个事件:

void Execute(object parameter);

bool CanExecute(object parameter);

event EventHandler CanExecuteChanged;

Execute()方法包含应用程序任务逻辑。

CanExecute()方法返回命令的状态;如果命令可用,返回true;如果不可用,返回false。

命令状态改变时,引发CanExecuteChanged事件。对于使用命令的任何控件,这是指示信号,表示它们应当调用CanExecute()方法检查命令的状态。

--------------------------------------------------------------------------------------------------------

RoutedCommand类

创建自己的命令时,不会直接实现ICommand接口;而是使用System.Windows.input.RoutedCommand类,该类自动实现了ICommand接口。RoutedCommand类是WPF中唯一实现了ICommand接口的类。所有WPF命令都是RoutedCommand类及其派生类的实例。

RouteCommand类不包含任何应用程序逻辑,只代表命令,只含有命令本身的功能,所有RoutedCommand对象的功能相同。

RouteCommand类为事件冒泡和隧道添加了一些额外的基础结构。

RouteCommand类私有地实现了ICommand接口,并添加了ICommand接口方法的不同版本。

public void Execute(object parameter, IInputElement target){}

public bool CanExecute(object parameter, IInputElement target){}

RoutedCommand类还引入三个属性:命令名称(Name属性)、包含命令的类(OwnerType)以及触发命令的按键或鼠标操作。

--------------------------------------------------------------------------------------------------------------------------

RoutedUICommand类

RoutedUICommand类继承自RoutedCommand类(实际上WPF的所有预先构建的命令都是RoutedUICommand对象)。

RoutedUICommand类只增加了Text属性,该属性是为了显示命令的文本。按钮的文本可以使用命令的Text属性,相同命令显示相同的文本。

------------------------------------------------------------------------------------------------------------------

命令库

WPF通过5个静态类的静态属性提供:

1、ApplicationCommand:通用命令,剪切板命令(Copy、Cut、Paste),文档命令(New、Open、Save、Save As、Print)等。

2、NavigationCommand:导航命令,基于页面的应用程序设计的一些命令(BrowseBack、BrowseForward和NextPage)等。

3、EditingCommand:文档编辑命令,

4、ComponentCommands:该类提供了由用户界面组建使用的命令。

5、MediaCommands:该类提供了一组用于处理多媒体的命令。

WPF-命令-基础知识的更多相关文章

  1. WPF 命令基础

    1命令的组成 命令源:就是谁发送的命令. 命令目标:就是这个命令发送给谁,谁接受的命令. 命令:就是命令的内容. 命令关联:就是把命令和外围的逻辑关联起来,主要用来判断命令是否可以执行和执行完以后干点 ...

  2. WPF基础知识、界面布局及控件Binding(转)

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

  3. WPF基础知识、界面布局及控件Binding

    WPF是和WinForm对应的,而其核心是数据驱动事件,在开发中显示的是UI界面和逻辑关系相分离的一种开放语言.UI界面是在XAML语言环境下开发人员可以进行一些自主设计的前台界面,逻辑关系还是基于c ...

  4. WPF Step By Step -基础知识介绍

    回顾 上一篇我们介绍了WPF基本的知识.并且介绍了WPF与winform传统的cs桌面应用编程模式上的变化,这篇,我们将会对WPF的一些基础的知识做一个简单的介绍,关于这些基础知识更深入的应用则在后续 ...

  5. Windows权限提升基础知识和命令

    介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需 ...

  6. Linux基础知识第九讲,linux中的解压缩,以及软件安装命令

    目录 Linux基础知识第九讲,linux中的解压缩,以及软件安装命令 一丶Linux Mac Windows下的压缩格式简介 2.压缩以及解压缩 3.linux中的软件安装以及卸载 1.apt进行安 ...

  7. Linux基础知识第三讲,拷贝文件跟移动文件命令

    目录 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命令 1.tree命令常用选项 2.cp复制文件命令 3.mv 命令的使用 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命 ...

  8. wpf(第一章 基础知识)

    wpf第一章基础知识:通过vs2015创建wpf程序会在引用里面多出3个核心程序集PresentationCore.PresentationFramework.WindowsBase.并且会在解决方案 ...

  9. Linux基础知识与基础命令

    Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...

  10. Shell编程(二)——shell的基础知识及常用命令

    shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?​匹配一个字符 5 输入输出重定向 ...

随机推荐

  1. Linux安装virtualenvwrapper

    1.pip install virtualenvwrapper 2.export WORKON_HOME=/home/virtualenv  //配置虚拟环境变量,以后直接mkvirtualenv 虚 ...

  2. C语言结构体定义位域,从bit0开始,依次到最高bit位

    位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据 ...

  3. Java第一次代码作业汇总

    练习题1:(完数问题) 求100以内的所有完数.(完数:它所有因子之和等于其本身)   方法一: /* 解体思路:1.先找出每个数的所有因子 2.比较因子之和是否与其数本身相等 */ public c ...

  4. thinkPHP中Model的字段映射问题

    在model定义中不要自己定义相应的字段变量,因为一旦定义,之后的赋值会直接赋给自己定义的属性,但实际上model抽象类重写了__set()方法,将未定义的属性存入了$data里面,写入数据库是也会从 ...

  5. 一种高灵敏度自带DSP降噪算法的音频采集解决方案

    背景调研   随着AI渗透到各行各业,人们对语音的需求也越来越大,最近一两年,各种AI音频设备如雨后春笋般冒出.各种智能AI设备的推出,意味者市场对低成本的音频采集设备越来越多.针对这种情况,我们开发 ...

  6. 【Android开发艺术探索】四大组件的工作过程

    个人博客 http://www.milovetingting.cn 四大组件的工作过程 四大组件:Activity.Service.BroadcastReceiver.ContentProvider ...

  7. Centos 7.5 搭建FTP配置虚拟用户

    Centos 7.5 搭建FTP配置虚拟用户 1.安装vsftpd #vsftpd下载地址 http://mirror.centos.org/centos/7/os/x86_64/Packages/v ...

  8. youtube使用youtube-dl下载挂代理的方法

    youtube-dl.exe --no-check-certificate --proxy=127.0.0.1:1080 --external-downloader=aria2c --external ...

  9. ASP.NET Learning Center---学习ASP.NET(1)

    1,学习地址---微软官网 2,目标:学习Razor,以及建立Web应用. 3,https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor ...

  10. 获取redis实例绑定cpu的情况

    redis是一个单线模型的nosql类型的数据库,而目前接触到的服务器大都是多核的,比如8c,16c,32c,64c等等.为了充分利用主机,在一台主机上必然会部署多个redis实例,默认情况cpu会随 ...