[WPF]ICommand最佳使用方法
2024-10-20 13:40:09
public class RelayCommand:ICommand
{
private Predicate<object> _canExecute;
private Action<object> _execute;
public RelayCommand(Predicate<object> canExecute, Action<object> execute)
{
this._canExecute = canExecute;
this._execute = execute;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
}
使用:
public class MyViewModel
{
private ICommand _doSomething;
public ICommand DoSomethingCommand
{
get
{
if (_doSomething == null)
{
_doSomething = new RelayCommand(
p => this.CanDoSomething,
p => this.DoSomeImportantMethod());
}
return _doSomething;
}
}
}
其中,Predicate<object>:
最新文章
- 【简易版】HashMap(增删改查)
- Android开发学习---使用XmlPullParser解析xml文件
- [转]Jenkins Xcode打包ipa
- 二模02day1解题报告
- 电脑Win7如何取得文件管理所有权(提供各种GHOST版本的Windows)
- 自定义Dialog,从下面弹出
- 微信小程序采坑
- Netty 系列七(那些开箱即用的 ChannelHandler).
- LoadRunner脚本参数化之设置条件与运行结果说明
- 记账本,C,Github,util
- 批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量,大于指定次数的IP
- Hadoop.之.入门部署
- 同一台主机部署两个比特币钱包以及rpc服务的摘要
- Android 模拟输入那点事
- 好汉两个半第一季/全集Two And A Half Men迅雷下载
- windows取证
- DEMO: springboot 与 freemarker 集成
- [SQLServer] 内存占用查看
- kalilinux、parrotsecos没有声音
- 03:成绩排序 个人博客:doubleq.win