整个命令系统的流程如下:

CommandManager 负责监听一些它关注的属性的更改(例如:Focus、Click),当界面上有此类事件发生时,它会通知所有的 RoutedCommand 发生 CanExecutedChanged 事件。

这时,已经绑定了这些 RoutedComamnd 的 CommandSource (主要是各类控件),会调用 RoutedCommand 的 CanExecute 方法来检测是否可执行,并根据返回的结果来设置自己的状态。如,当返回可执行时,作为 CommandSource 的按钮则会设置自己的 IsEnabled 属性为 true。此时,如果用户“点击”了这个 CommandSource 时,它会调用它所绑定的 RoutedCommand 的 Execute 方法。

CommandBinding 的主要设计目标是为了在一个较高的逻辑树节点(例如 Window 节点)处,重用固定的命令执行逻辑。也就是说,当我在 Window上使用 CommandBinding 绑定了某个 RoutedCommand 的执行逻辑后,所有 Window 中的逻辑子结点如果执行了此 RoutedCommand,则会按照路由顺序寻找此 RoutedCommand 所对应的 CommandBinding,找到后,则会执行其绑定的执行逻辑。

这也就是 RoutedCommand 的命名由来,也说明了,CommandBinding 只能用于绑定 RoutedCommand。

本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2011/01/24/1942863.html,如需转载请自行联系原作者

WPF Commanding Overview 的笔记相关推荐

  1. 关于WPF装饰器的笔记

    关于装饰器 参见这几篇文章,较为详尽 详解Adorner Layer http://www.cnblogs.com/nankezhishi/archive/2010/07/10/adornerlaye ...

  2. WPF自学手册-读书笔记(一)

    本读书笔记是根据李响的<WPF自学手册>编写的学习笔记.争取每一卷出一个读书笔记. 上路吧 WPF 微软四重门 DirectX 使上层应用程序跳过中间层直接全速访问硬件设备.与OpenGL ...

  3. WPF and Silverlight 学习笔记(十):WPF控件模型

    WPF对控件其类型的继承方式如下 (其中绿色表示的类是抽象类,蓝色表示的类是非抽象类) 控件内容模型      System.Windows.Controls.Control类:表示 用户界面 (UI ...

  4. 零起点学习WPF之《WPF揭秘》读书笔记(7)——第三章 变更通知

    3.2.2变更通知 无论何时,只要WPF依赖属性的值发生改变,WPF就会自动根据属性的元数据触发一系列的动作,这些动作可以重新呈现适当的元素,更新当前布局,刷新数据绑定等.内建的变更通知最有趣的特性之 ...

  5. WPF and Silverlight 学习笔记(十八):WPF样式(Style)与模板(Template)

    一.WPF样式 类似于Web应用程序中的CSS,在WPF中可以为控件定义统一的样式(Style).样式属于资源的一种,例如为Button定义统一的背景颜色和字体: 1: <Window.Reso ...

  6. WPF and Silverlight 学习笔记(九):WPF布局管理之Canvas、InkCanvas

    一.Canvas 在WPF中子元素的绝对定位的布局控件 其子元素使用Width.Height定义元素的宽度和高度 使用Convas.Left(Convas.Right).Convas.Top(Conv ...

  7. WPF and Silverlight 学习笔记(二十):WPF数据绑定概述

    WPF数据绑定为应用程序提供了一种表示数据和与数据交互的简单而又一致的方法.元素能够以公共语言运行库 (CLR) 对象和 XML 的形式绑定到各种数据源中的数据. 一.数据绑定的基本概念: 数据绑定涉 ...

  8. WPF基础知识学习笔记(一)XAML基础

    掌握了C#和C++的程序员学习WPF的时候,首先遇到的麻烦就是XAML(实际上,很长一段时间以后,我发现XAML还是软肋). XAML语言和传统的C#和C++编程语言完全不同,这种不同是根植于两种语言 ...

  9. WPF and Silverlight 学习笔记(六):WPF窗体

    一.窗体类 在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类(类型化窗体).定义的窗体由两部分组成: 1.XAML文件 ...

最新文章

  1. 利用gevent实现异步执行任务
  2. 启用WebApi 2里的Api描述信息(Help下的Description)
  3. 利用python把成绩用雷达图表示出来
  4. c#对oracle操作时候 出现的乱码问题。
  5. php页面中文乱码分析,PHP页面中文乱码分析
  6. boost::fusion::single_view用法的测试程序
  7. eclipse插件egit安装使用
  8. 「权威发布」2019年大学生电子设计竞赛题目
  9. 多场景下的AI疫情防控“天网”:解读云边端联动下的全栈 AI 技术
  10. 【51】编写new和delete时需固守常规
  11. php1到5000排序,常用的排序算法(一)--快速排序(PHP实现)
  12. Android Service 详解一:概述
  13. 文字版--九九乘法表 c语言
  14. 图书管理系统mysql数据库设计_简单的图书馆管理系统数据库设计
  15. linux 下载git源码,在linux系统下Git源码系统的文件下载
  16. 下载并安装WIN7 SP2的官方补丁包
  17. MATLAB非线性可视化之线性系统相图
  18. Python实现简易搜索引擎
  19. 订单管理_02修改订单信息流程
  20. 使用手机模拟NFC加密门禁卡

热门文章

  1. 什么是 PDF 扁平化?怎样扁平化 PDF? 一起涨知识!
  2. 田金龙老师讲解杨式太极拳的起势
  3. Adobe ——pdf文档加密且不可编辑
  4. Xcode MacOS与clang c++版本关系
  5. outlook ios日历_如何从Outlook 2013中的日历中删除假期
  6. 崔羚:乳品行业后道包装及物流解决方案
  7. Python从Word/PPT/PDF中抽取图片
  8. Linux系统中社保卡阅读
  9. 【直播回顾】Hello HarmonyOS系列应用篇完美收官!
  10. 西瓜书(周志华):什么是版本空间以及如何求取版本空间