WPF与MVVM的实现(四)命令绑定
来源:互联网 发布:网络悲伤情歌 编辑:程序博客网 时间:2024/06/08 19:49
接触WPF已经有两年,大大小小开发过几个项目,但从来没有系统的去学习过。几次开发项目时都觉得十分的恼火,太多的事件稍微考虑不到位就会带来麻烦,为此特地系统的看了一本《C#高级编程》第10版,了解到MVVM框架,看了之后十分欢喜,本篇记录研究MVVM过程。
0001 ICommand接口的实现
public class RelayCommand : ICommand{#region Fields readonly Action<object> _execute;readonly Predicate<object> _canExecute; #endregion // Fields #region Constructors /// <summary>/// Creates a new command that can always execute./// </summary>/// <param name="execute">The execution logic.</param>public RelayCommand(Action<object> execute): this(execute, null){} /// <summary>/// Creates a new command./// </summary>/// <param name="execute">The execution logic.</param>/// <param name="canExecute">The execution status logic.</param>public RelayCommand(Action<object> execute, Predicate<object> canExecute){if (execute == null)throw new ArgumentNullException("execute"); _execute = execute;_canExecute = canExecute;} #endregion // Constructors #region ICommand Members [DebuggerStepThrough]public bool CanExecute(object parameters){return _canExecute == null ? true : _canExecute(parameters);} public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; }remove { CommandManager.RequerySuggested -= value; }} public void Execute(object parameters){_execute(parameters);} #endregion // ICommand Members }
0010 不带参数的命令绑定
前台:
<Button x:Name="button" Content="添加" Command="{Binding AddTimeCommand}" HorizontalAlignment="Left" Margin="288,158,0,0" VerticalAlignment="Top" Width="89" Height="36"> </Button>
后台:
RelayCommand _addTimeCommand = null;public ICommand AddTimeCommand{get{if (null == _addTimeCommand){_addTimeCommand = new RelayCommand((p) => OnAddTime(), (p) => CanAddTime());}return _addTimeCommand;}}bool CanAddTime(){return true;}void OnAddTime(){MyDateTime.Add(DateTime.Now.ToString());}
0011 带参数的命令绑定
前台:
<Button x:Name="button2" Content="修改" Command="{Binding ChangeTimeCommand}" CommandParameter="button2" HorizontalAlignment="Left" Margin="382,199,0,0" VerticalAlignment="Top" Width="89" Height="36"></Button>
后台:
public RelayCommand ChangeTimeCommand{get{return new RelayCommand(OnChangeTime, CanChangeTime);}}bool CanChangeTime(object parameter){return true;}void OnChangeTime(object parameter){if (MyDateTime.Count > 0){MyDateTime.RemoveAt(0);MyDateTime.Insert(0, DateTime.Now.ToString());}}
完
阅读全文
0 0
- WPF与MVVM的实现(四)命令绑定
- WPF与MVVM的实现(二)数据绑定
- WPF与MVVM的实现(三)List的数据绑定
- WPF与MVVM的实现(一)MVVM简介
- MVVM实现任意命令的绑定方法
- WPF与MVVM的实现(五)注册路由事件
- MVVM设计模式和WPF中的实现 (事件绑定)
- WPF-MVVM双向绑定
- Windwos Phone MVVM Light的 EventToCommand 命令绑定实现方式
- MVVM wpf listitem中绑定list外的命令的方法。
- 们只是「电脑玩物」 首页 实用技巧 免费资源 超好玩的游戏 软件推荐 IT技术 资讯 编程 其它 MVVM设计模式和WPF中的实现(四) 事件绑定 07net01.com 发布于 2015-10-08
- WPF(MVVM)菜单栏小勾与窗口绑定
- WPF MVVM 绑定RadioButton数据
- WPF MVVM 绑定ComboBox数据
- WPF MVVM绑定DateGrid的列的显隐性解决方案
- WPF中命令的绑定
- WPF中的命令与命令绑定(二)
- WPF中的命令与命令绑定(一)
- Unity面向组件开发
- 数据结构实验之查找七:线性之哈希表
- Java基础
- ASP Server对象
- 数据格式化工具
- WPF与MVVM的实现(四)命令绑定
- 数据结构实验之查找四:二分查找
- 算法练习(1)
- NGINX配置文件详解
- python 第6课
- 图像局部特征描述总结
- Hive 与 HBase 关系
- 基于dvwa的sql注入,使用fiddler修改请求参数
- String StringBuffer StringBuilder