当前位置:   article > 正文

WPF —— MVVM 指令执行不同的任务实例

WPF —— MVVM 指令执行不同的任务实例

标签页

设置两个按钮,

  1. <Button Content="修改状态" Width="100" Height="40" Background="red"
  2. Click="Button_Click"></Button>
  3. <Button Content="测试"
  4. Width="100"
  5. Height="40"
  6. Background="red"
  7. Margin="0,-100,0,0"
  8. Command="{Binding M1}"></Button>

cs代码页面 

1 事件成员 状态发生变化的时候事件,

 public event EventHandler CanExecuteChanged;

2 命令是否是可执行状态 参数就是xaml文件通过Commandparameter属性传递过来

如果外部没有控制状态的函数,默认指令可执行
            如果有指令能不能执行的函数,NengBuNengZhiXing返回值为true或者false

  1. public bool CanExecute(object parameter)
  2. {
  3. if (NengBuNengZhiXing == null) return true; //如果外部没有控制状态的函数,默认指令可执行
  4. // 如果有指令能不能执行的函数,NengBuNengZhiXing返回值为true或者false
  5. return NengBuNengZhiXing.Invoke(parameter);
  6. }

3 命令触发之后执行函数 参数就是xaml文件通过Commandparameter属性传递过来

  1. public void Execute(object parameter)
  2. {
  3. this.ChuFaMingLingFun.Invoke(parameter);
  4. }

 4 想触发命令之后执行不同的任务,执行不同excute方法,在excute执行外部传递过来的方法,可以
        在创建这个命令对象的把回调函数传递过来,找一个变量接受这个函数,在excute里面进行
        调用变量
        定义委托接受命令触发之后的函数 作为Execute要调用的

  1. Action<object> ChuFaMingLingFun;
  2. //接受判断命令是否能够执行的函数 ,作为CanExecute的判断条件
  3. Func<object, bool> NengBuNengZhiXing;

5 给上面俩个变量赋值 通过构造函数进行赋值

  1. public MyCommand(Action<object> a1, Func<object,bool> a2)
  2. {
  3. this.ChuFaMingLingFun = a1;
  4. this.NengBuNengZhiXing = a2;
  5. }

6 如果可执行的状态的发生变化了 触发CanExecuteChanged事件 在外部修改状态的时候调用

 

  1. public void OnCanExecuteChange()
  2. {
  3. CanExecuteChanged(this, EventArgs.Empty);
  4. }

7 使用指令
            //定义指令对象 参数一个无参数函数触发命令回调函数,
            //参数2是返回bool类型函数,控制指令状态

  1. public MyCommand M1 { get; set; }
  2. public MyCommand M2 { get; set; }
  3. public MainWindow()
  4. {
  5. InitializeComponent();
  6. this.DataContext = this;
  7. M1 = new MyCommand(f1,f2);
  8. M2 = new MyCommand(f3, f2);
  9. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/525786
推荐阅读
相关标签
  

闽ICP备14008679号