C# WPF编程-命令

C# WPF编程-命令

概述

  • 使用路由事件可以响应广泛的鼠标和键盘事件,这些事件是低级的元素。在实际应用程序中,功能被划分成一些高级的任务。这些任务可通过各种不同的动作和用户界面元素触发,包括主菜单、上下文菜单、键盘快捷键以及工具栏。
  • 可在WPF中定义这些任务(也就是命令)并将控件连接到命令,从而不需要重复编写事件处理代码。更重要的是,当连接的命名不可用时,命令特性通过自动禁用控件来管理用户界面的状态。

将事件处理程序映射到事件:

将事件映射到命令:

WPF命令的缺点:

  • 命令跟踪(例如,保留最近命令的历史记录);
  • "可撤销的"命令;
  • 具有状态并可处于不同"模式"的命令(例如,可被打开或关闭的命令);

WPF命令模型

WPF命令模型有许多可变的部分组成。他们都具有如下4个重要元素:

  • 命令: 命令表示应用程序任务,并且跟踪任务是否能被执行。然然,命令实际上不包含执行应用程序任务的代码。
  • 命令绑定: 每个命令绑定针对用户界面的具体区域,将命令连接到相关的应用程序逻辑。
  • 命令源: 命令源触发命令。
  • 命令目标: 命令目标是在其中执行命令的元素。

ICommand接口

WPF命令模型的核心是System.Windows.Input.ICommand接口,该接口定义了命令的工作原理。该接口包含两个方法和一个事件:

csharp 复制代码
public interface ICommand
{
	void Execute(object parameter);
	bool CanExecute(object parameter);
	event EventHandler CanExecuteChanged;
}
  • Execute()方法将包含应用程序任务逻辑(例如,打印文档)。
  • CanExecute()方法返回命令的状态,如果命令可用,返回true,否则返回false。
  • CanExecuteChanged():当命令状态变化时引发该事件。

注:Execute()和CanExecute()方法都接受一个附加的参数对象。

RoutedCommand类

  • 当创建自己的命令时,不会直接实现ICommand接口,而是使用System.Windows.Input.RoutedCommand类,该类自动实现了ICommand接口。RoutedCommand类是WPF中唯一实现了ICommand接口的类。

RoutedUICommand类

  • 在程序中处理的大部分命令不是RoutedCommand对象,而是RoutedUICommand类的实例,RoutedUICommand类继承自RoutedCommand类。
  • RoutedUICommand类用于具有文本的命令,这些文本显示在用户界面中的某些地方(如,菜单项文本、工具栏按钮的工具提示)。RoutedUICommand类只增加了Text属性,该属性为命令显示的文本。
  • 为命令定义命令文本的优点是可在某个位置执行本地化。

命令库

相关推荐
兢兢业业的小白鼠17 分钟前
Java高级JVM知识点记录,内存结构,垃圾回收,类文件结构,类加载器
java·开发语言·jvm·tomcat
Niuguangshuo27 分钟前
Python设计模式:代理模式
开发语言·python·代理模式
能来帮帮蒟蒻吗33 分钟前
GO语言学习(16)Gin后端框架
开发语言·笔记·学习·golang·gin
落榜程序员36 分钟前
Java 基础-29-final关键字-详解
java·开发语言
JavaPub-rodert1 小时前
一道go面试题
开发语言·后端·golang
6<71 小时前
【go】静态类型与动态类型
开发语言·后端·golang
桂月二二2 小时前
实时事件流处理架构的容错设计
架构·wpf
车载小杜2 小时前
基于指针的线程池
开发语言·c++
沐知全栈开发2 小时前
Servlet 点击计数器
开发语言
m0Java门徒2 小时前
Java 递归全解析:从原理到优化的实战指南
java·开发语言