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

ops/2024/10/19 21:34:41/

标签页

设置两个按钮,

 <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>

cs代码页面 

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

 public event EventHandler CanExecuteChanged;

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

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

public bool CanExecute(object parameter)
{if (NengBuNengZhiXing == null) return true; //如果外部没有控制状态的函数,默认指令可执行// 如果有指令能不能执行的函数,NengBuNengZhiXing返回值为true或者falsereturn 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);}


http://www.ppmy.cn/ops/22208.html

相关文章

LeetCode 104.二叉树的最大深度

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,…

Hive判空函数 COALESCE 和 NVL 使用示例

Hive判空函数 COALESCE 和 NVL 使用示例 1. 在Hive中&#xff0c; COALESCE 和 NVL 函数都是用于处理NULL值的函数&#xff0c;以下是它们的用途总结&#xff1a; COALESCE&#xff1a; COALESCE 函数用于返回参数列表中第一个非NULL的数值或表达式。语法&#xff1a; COALESC…

golang调用钉钉发送群机器人消息

golang调用钉钉发送群机器人消息 因为当时用的wire依赖注入&#xff0c;所以需要用多个钉钉机器人的时候&#xff0c;就把每个client实例加入到了map里 package dingtype Client interface {// SendMessage 发送钉钉SendMessage(s string, at ...string) error }type ClientO…

安装库后JupyterLab一直报ModuleNotFoundError问题解决

背景&#xff1a; 先安装的Python3.10&#xff0c;安装在默认路径&#xff1a; C:\Users\#用户名省略#\AppData\Local\Programs\Python\Python310\ 后安装的Anaconda&#xff0c;更改过路径在D盘&#xff1a; D:\ProgramData\anaconda3 此时C盘Python安装路径下Scripts文件…

百度竞价开户详解:步骤、优势与注意事项

随着互联网的普及&#xff0c;网络营销已成为企业不可或缺的一部分。其中&#xff0c;百度竞价作为一种高效的网络推广方式&#xff0c;受到了越来越多企业的青睐。本文将详细介绍百度竞价开户的流程、优势以及注意事项&#xff0c;帮助企业更好地利用这一工具提升品牌知名度和…

关于HTML

什么是网页&#xff1a; 1.网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 2.网页是网站中的一“页”&#xff0c;通常是 HTML 格式的文件&#xff0c;它要通过浏览器来阅读。 网页的组成&#xff1a; 1.网页是构成网站的基…

⑥ - 后端工程师通识指南

&#x1f4d6; 该文隶属 程序员&#xff1a;职场关键角色通识宝典 ✍️ 作者&#xff1a;哈哥撩编程&#xff08;视频号同名&#xff09; 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏…

基于深度学习神经网络的AI弱光图像增强HEP系统源码

第一步&#xff1a;HEP介绍 基于深度学习的微光图像增强方法通常需要大量的成对训练数据&#xff0c;这在现实世界中是不切实际的。最近&#xff0c;已经探索了无监督的方法来消除对成对训练数据的依赖。然而&#xff0c;由于缺乏先验&#xff0c;它们在不同的现实世界场景中表…