WPF CanExecuteChanged
继承ICommand ,RelayCommand命令
1 public class RelayCommand : ICommand 2 { 3 private readonly Action _execute; 4 private readonly Func<bool> _canExecute; 5 public event EventHandler CanExecuteChanged; 6 public RelayCommand(Action execute) : this(execute, null) 7 { 8 } 9 public RelayCommand(Action execute, Func<bool> canExecute) 10 { 11 if (execute == null) 12 { 13 throw new ArgumentNullException("execute"); 14 } 15 this._execute = execute; 16 this._canExecute = canExecute; 17 } 18 public void RaiseCanExecuteChanged() 19 { 20 EventHandler canExecuteChanged = this.CanExecuteChanged; 21 if (canExecuteChanged != null) 22 { 23 canExecuteChanged.Invoke(this, EventArgs.Empty); 24 } 25 } 26 [DebuggerStepThrough] 27 public bool CanExecute(object parameter) 28 { 29 return this._canExecute == null || this._canExecute.Invoke(); 30 } 31 public void Execute(object parameter) 32 { 33 this._execute.Invoke(); 34 } 35 }
View Code
我们改变SaveCommand的CanExecute从false到true,而save命令执行的状态。CanExecuteChanged事件和客户端调用CanExecute方法,.在实践中,这将使一个“保存”按钮,该按钮被绑定到SaveCommand改变它的状态从禁用和重新启用。
1 public class BlingViewModel 2 { 3 private DelegateCommand<object> _saveCommand; 4 private bool _canSaveExecute = true; 5 public ICommand SaveCommand 6 { 7 get 8 { 9 if (_saveCommand == null) 10 { 11 _saveCommand = new DelegateCommand<object>(executeMethod: _ => Save(), canExecuteMethod: _ => _canSaveExecute); 12 } 13 return _saveCommand; 14 } 15 } 16 private void Save() 17 { 18 _canSaveExecute = false; 19 _saveCommand.RaiseCanExecuteChanged(); 20 Console.WriteLine("Saving..."); 21 _canSaveExecute = true; 22 _saveCommand.RaiseCanExecuteChanged(); 23 } 24 }
View Code
.也可以直接调用System.Windows.Input.CommandManager.InvalidateRequerySuggested()让你的
CanExecute处理程序重新评估。
转载于:https://www.cnblogs.com/raohuagang/p/3618355.html
WPF CanExecuteChanged相关推荐
- 了解 WPF 中的路由事件和命令
目录 路由事件概述 WPF 元素树 事件路由 路由事件和组合 附加事件 路由命令概述 操作中的路由命令 命令路由 定义命令 命令插入 路由命令的局限 避免命令出错 超越路由命令 路由处理程序示例 要想 ...
- CleanAOP实战系列--WPF中MVVM自动更新
CleanAOP实战系列--WPF中MVVM自动更新 作者: 立地 邮箱: jarvin_g@126.com QQ: 511363759 CleanAOP介绍:https://github.com/J ...
- 【WPF】MVVM模式的3种command
原文:[WPF]MVVM模式的3种command 1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因为MVVM模式适合于WPF和SL, ...
- wpf mvvm 实例
1.程序结构如图所示: 2.Model实现 在Model文件夹下新建业务类StudentModel,代码如下: public class StudentModel : INotifyPropertyC ...
- WPF快速入门系列(8)——MVVM快速入门
一.引言 在前面介绍了WPF一些核心的内容,其中包括WPF布局.依赖属性.路由事件.绑定.命令.资源样式和模板.然而,在WPF还衍生出了一种很好的编程框架,即WVVM,在Web端开发有MVC,在WPF ...
- Windows Presentation Foundation (WPF)中的命令(Commands)简述
Windows Presentation Foundation (WPF)中的命令(Commands)简述 原文:Windows Presentation Foundation (WPF)中的命令(C ...
- [译]WPF 应用程序和MVVM设计模式 ——Josh Smith
这篇文章讨论: 模式与WPF MVP模式 为什么MVVM更加适用于WPF 用MVVM构建一个应用程序 译文地址: http://www.cnblogs.com/lujiao_cs/ar ...
- prism项目搭建 wpf_Prism完成的一个WPF项目
本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要针对C#初学者,巩固C#常用知识点: 中级篇主要针对WPF布局与Mat ...
- WPF 自定义快捷键命令(COMMAND)(转)
命令简介 WPF 中的命令是通过实现 ICommand 接口创建的.ICommand 公开两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged).Exec ...
最新文章
- Velocity.js中文文档
- IE请求json数据时出现下载文件的现象。
- 今天的俩个一齐说的即时通讯
- sql 查询目标数据库中所有的表以其关键信息
- js的继承和原型链(更新中)
- 【leetcode 简单】第五题 最长公共前缀
- Python请求外部POST请求,常见四种请求体
- 如何获得SQL Server 2012 MCSA认证
- C语言全局变量和局部变量总结
- 【深度学习--图像分类】imageAI自定义模型训练
- kindle上网看其他网址_原来kindle不止可以看书,快来看看体验版浏览器怎么玩!...
- 计算机添加桌面小插件,一款实用的Windows小插件 ——桌面日历DesktopCal
- rainyday.js 下雨效果插件使用方法
- 天堂2启动mysql就没了_单机天堂2运行不了 求助
- CASIA -HWDB2.0-2.2和OLHWDB2.0-2.2数据集解析
- 芒果改进目录一览|原创改进YOLOv5、YOLOv7等YOLO模型全系列目录 | 人工智能专家唐宇迪老师联袂推荐
- 23种设计模式-单一原则
- 分享|百度ACE智能交通“双智”实践蓝皮书(附PDF)
- 小啊呜产品读书笔记001:《邱岳的产品手记-12》第22讲 产品经理的图文基本功(上):产品文档 23讲产品经理的图文基本功(下):产品图例
- Hexo+Gitee搭建个人博客 —— 零基础Gitee部署
热门文章
- $(document).ready() 和 window.onload 方法比较
- android listview使用自定义的adapter没有了OnItemClickListener事件解决办法
- 最短路径--Floyd算法
- [Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现
- 非安装版的PostgreSQL8.3.3的首次使用经历
- shell 删除了hdfs 文件,在HDFS上删除超过10天的文件
- UDP sendto和recvfrom使用详解
- Matlab Compiler路径
- 少儿编程100讲轻松学python(二)-python cv2模块怎么安装
- 友声电子秤设置软件_友声电子秤说明书/操作指南?(一)