《深入浅出WPF》学习笔记(五)——Command

本文深入探讨WPF中的Command机制,包括命令系统的基本元素及其关系,如命令、命令源、命令目标和命令关联。阐述了使用命令的步骤,并提供了完整的使用示例。同时,详细介绍了如何自定义命令,包括实现ICommand接口,创建自定义命令源和目标,以及关注命令的执行和可执行状态变化。
摘要由CSDN通过智能技术生成

Command

与事件相比,命令具有约束力,命令除了约束代码,还可以约束步骤逻辑。

一、命令系统的基本元素及其关系

1. 基本元素

  1. 命令: 实现了ICommand接口的类(常用RoutedCommand/自定义);
  2. 命令源: 实现了ICommandSource接口的类(Button、MenuItem、ListBoxItem等);
  3. 命令目标: 命令作用的对象,实现了IInputElement接口的类;
  4. 命令关联: 负责将外围逻辑和命令关联起来。

2. 基本元素之间的关系

在这里插入图片描述

二、使用命令的步骤

  1. 创建命令类: 获得一个实现ICommand接口的类;
    命令与具体业务逻辑无关:RoutedCommand;
    命令与具体业务逻辑有关:创景RoutedCommand或ICommand的派生类;
  2. 声明命令实例;
  3. 指定命令源: 同一个命令可以有多个源;
  4. 指定命令目标: 命令目标是命令源的属性
  5. 设置命令关联:
    向上:绑定命令的源和目标后,命令目标会不停发送可路由的附加事件PreviewCanExecute和CanExecute向上路由,事件被命令关联捕捉后,命令关联将能否发送命令报告给命令;
    向下:命令被下发至命令目标后,命令目标发送附加事件PreviewExecute和Execute向上路由,完成后续任务。
完整使用命令步骤的例程:

C#:

//声明命令
private RoutedCommand clearCmd = new RoutedCommand("Clear", typeof(Page3));
//定义命令(也可在xaml中关联,命令的事件处理器定义在后台)
private void InitializeCommand()
{
   
    //把命令赋值给命令源(发送者)并指定快捷键
    this.button1.Command = this.clearCmd;
    this.clearCmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt));//只负责跑腿,真正的工作有cb_Executed完成

    //指定命令目标
    this.button1.CommandTarget = this.textBoxA;

    //创建命令关联
    //关联一定要安装在命令目标的外围控件上!!!否则无法捕捉到CanExecute和Execute命令
    CommandBinding cb = new CommandBinding();
    cb.Command = this.clearCmd;//只关注与clearCmd相关的事件
    cb.CanExecute += new CanExecuteRoutedEventHandler(cb_CanExecute);
    cb.Executed += new ExecutedRoutedEventHandler(cb_Executed);

    //把命令关联安置在外围控件上
    this.empty.CommandBindings.Add(cb
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值