赞
踩
设置两个按钮,
- <Button Content="修改状态" Width="100" Height="40" Background="red"
- Click="Button_Click"></Button>
- <Button Content="测试"
- Width="100"
- Height="40"
- Background="red"
- Margin="0,-100,0,0"
- Command="{Binding M1}"></Button>
1 事件成员 状态发生变化的时候事件,
public event EventHandler CanExecuteChanged;
2 命令是否是可执行状态 参数就是xaml文件通过Commandparameter属性传递过来
如果外部没有控制状态的函数,默认指令可执行
如果有指令能不能执行的函数,NengBuNengZhiXing返回值为true或者false
- public bool CanExecute(object parameter)
- {
- if (NengBuNengZhiXing == null) return true; //如果外部没有控制状态的函数,默认指令可执行
- // 如果有指令能不能执行的函数,NengBuNengZhiXing返回值为true或者false
-
- return NengBuNengZhiXing.Invoke(parameter);
- }
3 命令触发之后执行函数 参数就是xaml文件通过Commandparameter属性传递过来
- public void Execute(object parameter)
- {
- this.ChuFaMingLingFun.Invoke(parameter);
-
- }
4 想触发命令之后执行不同的任务,执行不同excute方法,在excute执行外部传递过来的方法,可以
在创建这个命令对象的把回调函数传递过来,找一个变量接受这个函数,在excute里面进行
调用变量
定义委托接受命令触发之后的函数 作为Execute要调用的
- Action<object> ChuFaMingLingFun;
-
- //接受判断命令是否能够执行的函数 ,作为CanExecute的判断条件
- Func<object, bool> NengBuNengZhiXing;
5 给上面俩个变量赋值 通过构造函数进行赋值
- public MyCommand(Action<object> a1, Func<object,bool> a2)
- {
- this.ChuFaMingLingFun = a1;
- this.NengBuNengZhiXing = a2;
-
- }
6 如果可执行的状态的发生变化了 触发CanExecuteChanged事件 在外部修改状态的时候调用
- public void OnCanExecuteChange()
- {
- CanExecuteChanged(this, EventArgs.Empty);
- }
7 使用指令
//定义指令对象 参数一个无参数函数触发命令回调函数,
//参数2是返回bool类型函数,控制指令状态
- public MyCommand M1 { get; set; }
- public MyCommand M2 { get; set; }
- public MainWindow()
- {
- InitializeComponent();
- this.DataContext = this;
-
- M1 = new MyCommand(f1,f2);
- M2 = new MyCommand(f3, f2);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。