当前位置: 首页 > news >正文

第七章-命令

一、命令的概念

WPF命令是一种任务封装、用于实现MVVM模式中的重要一环。

命令系统包括命令、命令源、命令目标和命令绑定,它们共同构成了WPF中的主要核心要素。

命令与模板、数据绑定一起,实现了前后端的逻辑分离

 

二、命令的组成

(1)命令(继承ICommand接口)
RoutedUICommand->RoutedCommand->ICommand

命令库(预定义):5个静态类(5组)。大部分都是RoutedUICommand对象。
ApplicationCommands、NavigationCommands、EditingCommands、ComponentCommands、MediaCommands

(2)命令源(ICommandSource)
调用命令的对象
  (2.1)Command:指向连接的命令。必须有
  (2.2)CommandParameter:提供其他希望随命令发送的数据,
  (2.3)CommandTarget:确定将在执行命令的元素。
(3)命令目标:是要在其上执行命令的对象。继承IInputElement即可
(4)命令绑定(CommandBinds)将某个命令与一些逻辑代码进行绑定

  <!--命令对象为ApplicationCommands.New执行逻辑为CommandBinding_Executed二者通过以下代码绑定--><Window.CommandBindings><CommandBinding Command="ApplicationCommands.New" Executed="CommandBinding_Executed"></CommandBinding></Window.CommandBindings><StackPanel><Button Command="ApplicationCommands.New"  CommandTarget="{Binding ElementName=btn_Target}">按钮(命令源)</Button><Button x:Name="btn_Target">命令目标</Button></StackPanel>

 

三、自定义命令

 public class CustCmd : ICommand{public event EventHandler? CanExecuteChanged;//命令状态发生改变的事件// 能否执行该命令,命令状态public bool CanExecute(object? parameter){return true;}// 如何执行,目前未分离业务public void Execute(object? parameter){//业务逻辑MessageBox.Show($"已经在执行,参数为{parameter}");}}
  <Window.Resources><cmd:CustCmd x:Key="cuscmd"></cmd:CustCmd></Window.Resources><Grid><Button Command="{StaticResource cuscmd}" CommandParameter="Hello" Width="400" Height="200"> 自定义命令</Button></Grid>

 

 

四、将业务代码修改为委托类型

  当没有参数、没有返回值:使用Action

  当有参数、没有返回值:使用Action<T1,T2...>

  当没有参数,有返回值使用Func<T1>

  当有参数、有返回值:使用Func<T1,T2>

 //将业务从命令地址分离出来,将要处理的业务方法传递给命令(系统委托)public class CustCmdNotBusin : ICommand{//1、无参数、无返回值public Action CmdAction { set; get; }   //委托public event EventHandler? CanExecuteChanged;public bool CanExecute(object? parameter){return true;}public void Execute(object? parameter){if (CmdAction != null){CmdAction.Invoke();//执行委托
         }}}

  

http://www.gsyq.cn/news/105688.html

相关文章:

  • 【详解】Hydra安装Libssh模块
  • python训练营打卡DAY13
  • Daihatsu Key Programming Made Easy: Lonsdor K518 Pro FCV License Activation for Shops Owners
  • 计算机毕设之基于hadoop的好大夫数据大屏可视化分析系统
  • 如何高效管理Windows驱动程序?Driver Store Explorer完整使用指南
  • netgin框架,仅供学习源gin
  • 增强现实与人工智能技术在工业培训与智能维修体系中的创新应用研究
  • Poppler Windows版:免费高效的PDF文档处理神器
  • 如何用ColorUI选项卡组件解决移动端界面切换难题
  • Zepp Life自动刷步终极指南:3分钟搞定微信支付宝同步
  • 導出 V2ex 的收藏主題
  • PyTorch安装教程GPU版:基于CUDA基础镜像的全流程配置说明
  • 谷歌镜像站同步更新:Qwen-Image全球加速访问
  • LosslessCut视频调色终极技巧:从新手到高手的色彩魔法
  • DevC++用户福音:通过Seed-Coder-8B-Base实现C++智能补全
  • 企业级PaaS平台租户隔离深度解析:构建安全可靠的多团队协作环境
  • 为什么说Qwen3-14B是中小企业AI落地的最佳选择?
  • Atcoder vp记录
  • 12.15每日总结
  • GitHub Issue追踪Qwen-Image-Edit-2509已知Bug与修复进度
  • 快速验证:用AI生成Druid监控原型参加技术评审
  • 大模型微调监控指标:跟踪Qwen3-32B训练过程
  • zsj_蓝桥系列3python_类与内置类型
  • 日总结 39
  • 蜜度携文修大模型亮相人工智能先进技术成果供需对接大会 赋能各行业智能化转型
  • LLM基础知识,langchainV1.0讲解(一)
  • 10 个课堂汇报降重工具,本科生AI查重率优化推荐
  • Git commit message规范助力Qwen-Image-Edit-2509协作开发
  • Reactor Core终极指南:掌握高性能异步编程的完整教程
  • Stable Diffusion 3.5 FP8性能实测:推理速度提升40%背后的黑科技