C# WPF编程-命令

C# WPF编程-命令

  • 概述
  • WPF命令模型
    • ICommand接口
    • RoutedCommand类
    • RoutedUICommand类
    • 命令库

概述

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

将事件处理程序映射到事件:
在这里插入图片描述
将事件映射到命令:
在这里插入图片描述

WPF命令的缺点:

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

WPF命令模型

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

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

ICommand接口

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

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属性,该属性为命令显示的文本。
  • 为命令定义命令文本的优点是可在某个位置执行本地化。

命令库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/514379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…

文献速递:深度学习胰腺癌诊断--螺旋变换与模型驱动的多模态深度学习方案相结合,用于自动预测胰腺癌中TP53突变麦田医学

Title 题目 Combined Spiral Transformation and Model-Driven Multi-Modal Deep Learning Scheme for Automatic Prediction of TP53 Mutation in Pancreatic Cancer 螺旋变换与模型驱动的多模态深度学习方案相结合,用于自动预测胰腺癌中TP53突变 01 文献速递介…

计算机视觉——图像金字塔理解与代码示例

图像金字塔 有时为了在图像中检测一个物体(例如人脸、汽车或其他类似的物体),需要调整图像的大小或对图像进行子采样,并进行进一步的分析。在这种情况下,会保持一组具有不同分辨率的同一图像。称这种集合为图像金字塔…

【数据分析实战】印尼雅加达咖啡市场分析:品牌排名与市场趋势解读

目录 背景介绍数据展示数据分析可视化1. 各市咖啡店占比:1.1 可视化代码1.2 可视化结果1.3 浅薄解读 2. 品牌市场份额排名:2.1 可视化结果1.2 浅薄解读 3. 品牌消费者满意指数:3.1 可视化代码3.2 可视化结果3.3 浅薄解读 写在最后 背景介绍 …

03 Python进阶:MySQL - mysql-connector

mysql-connector安装 要在 Python 中使用 MySQL 数据库,你需要安装 MySQL 官方提供的 MySQL Connector/Python。下面是安装 MySQL Connector/Python 的步骤: 首先,确保你已经安装了 Python,如果没有安装,可以在 Python…

Flutter应用版本管理与更新策略:在苹果商店上架后的持续优化

引言 Flutter是一款由Google推出的跨平台移动应用开发框架,其强大的性能和流畅的用户体验使其备受开发者青睐。然而,开发一款应用只是第一步,将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上…

Linux下Nginx详解

1、概念 1.1 介绍 Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它的设计目标是高性能、稳定性、丰富的功能和低资源消耗。 1.2 应用场景 Web服务器:Nginx可以作为静态资源服务器,处理静态文件…

uniapp选择退出到指定页面

方法一:返回上n层页面 onUnload(){uni.navigateBack({delta:5,//返回上5层})},方法二:关闭当前页面,跳转到应用内的某个页面。 uni.redirectTo({url: "../home/index"//页面地址}) 方法三:关闭所有页面,打…

(2024)Ubuntu源码安装多个版本的opencv并切换使用

本人工作会用到x86_64的opencv和aarch64的opencv,所以写下来备忘自用 一、源码编译安装 依赖库安装: sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev o…

图论(Graph theory)

抽象数据结构类型 Graphic操作接口 操作接口功能描述操作接口功能描述e()获取图的总边数n()顶点的总数exits(v,u)判断v,u两个顶点是否存在边insert(v) 在顶点集 V 中插入新顶点 v remove(v,u)删除从v 到u的 关联边 remove(v) 将顶点 v 从顶点集中删除 type(v,u)边所属的类型(…

特征增强自蒸馏卷积神经网络

目录 1.1 模型总体架构 1.2 特征增强金字塔模块 1.3 辅助分类器 1.1 模型总体架构 与自然图像相比,遥感场景图像地物较为复杂,具有类间相似度高和类内差异大的特点,这导致常用的网络模型难以有效学习遥感场景图像的表征特征。此外&#xf…

使用Python获取红某书笔记详情并批量无水印下载

根据红某手最新版 请求接口必须要携带x-s x-s-c x-t,而调用官方接口又必须携带cookie,缺一不可,获取笔记详情可以通过爬取网页的形式获取,虽然也是无水印,但是一些详情信息只能获取大概,并不是详细的数值,因此既不想自己破解x-s x…

【Qt】Ubuntu20.04.6+Qt5.15.2+QtCreator10.0.1无法输入中文

1、前提条件 1)已经安装了fcitx sudo apt install fcitx sudo apt install fcitx-pinyin sudo apt install fcitx-bin fcitx-table-all sudo apt install fcitx-qt52)系统已经配置fcitx 3)将系统下 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx…

Pygame基础11-mask 蒙版

蒙版 蒙版是二值化的图像,每个像素的值只能是0或1。 mask(蒙版)的用途: 碰撞检测部分着色 案例 和字母的碰撞检测 当玩家碰到字母 α \alpha α时,改变玩家颜色为绿色,否则为红色。 注意:我们希望碰到字母 α \alp…

c语言--联合体(声明、特点、计算)

目录 一、联合体类型的声明二、 联合体的特点三、 相同成员的结构体和联合体对比四、 联合体大小的计算 一、联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。…

游戏引擎中的物理应用

一、 角色控制器 Character Controller和普通的动态对象(Dynamic Actor )是不同的,主要的三个特点是: 它拥有可控制的刚体间的交互假设它是有无穷的摩擦力(可以站停在位置上),没有弹性加速和刹车几乎立即…

2023最新汽车网络安全报告汇总

2023最新汽车网络安全报告、安全参考架构及指南汇总,供大家学习参考。https://t.zsxq.com/18RkG260k 汽车信息安全法律法规及标准全景图V3.2.pdf 车载智能计算基础平台参考架构2.0.pdf 车载智能计算芯片白皮书(2023版).pdf 智能驾驶行为安全评价方法发布版.pdf 智能…

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论! 业务需求 在生产环境中,控制台窗口不便展示出来。 为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。 但是,存储所有输出的话会占用很多空间,…

Docker 部署开源远程桌面工具 RustDesk

RustDesk是一款远程控制,远程协助的开源软件。完美替代TeamViewer ,ToDesk,向日葵等平台。关键支持自建服务器,更安全私密远程控制电脑!官网地址:https://rustdesk.com/ 环境准备 1、阿里云服务器一 台&a…

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理,如果想要C…