WPF实现更加灵活绑定复杂Command(使用Microsoft XAML Behaviors 库)

1、安装NuGet

        

2、在XAML的命名空间引入:

xmlns:i="http://schemas.microsoft.com/xaml/behaviors"

3、使用:

<Canvas Background="Aqua"><Rectangle Stroke="Red" Width="{Binding RectModel.RectangleWidth}" Height="{Binding RectModel.RectangleHeight}" Canvas.Left="{Binding RectModel.RectangleLeft}" Canvas.Top="{Binding RectModel.RectangleTop}"/><i:Interaction.Triggers><!--EventName是Command指定的Action--><i:EventTrigger EventName="MouseDown"><i:InvokeCommandAction Command="{Binding MouseDownCommand}"/></i:EventTrigger></i:Interaction.Triggers>
</Canvas>

        --我这里的ViewModel部分是这样子的

public SimpleCommand MouseDownCommand { get; private set; }   
// 构造方法中初始化
MouseDownCommand = new SimpleCommand { DoExecute = new Action<object>(MouseDown) };/// <summary>
/// 鼠标按下的命令执行逻辑
/// </summary>
/// <param name="obj"></param>
/// <exception cref="NotImplementedException"></exception>
private void MouseDown(object obj)
{Debug.WriteLine("触发Canvas的MouseDown命令");
}/// SimpleCommand类是这样的:
public class SimpleCommand : ICommand
{public event EventHandler CanExecuteChanged;public Action<object> DoExecute { get; set; }public bool CanExecute(object parameter){return true;}public void Execute(object parameter){if (DoExecute != null){DoExecute(parameter);}}
}

4、这样就可以在ViewModel中直接给这个Command内容了,不用像之前那么麻烦地绑定Command了,这样更加清晰,Command也可以有花样地组合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象思想以及原理以及内存图解

文章目录 什么是面向对象面向对象和面向过程区别创建一个对象用什么运算符?面向对象实现伪代码面向对象三大特征类和对象的关系。 基础案例代码实现实例化创建car对象时car引用的内存图对象调用方法过程 成员变量和局部变量作用范围在内存中的位置 关于对象的引用关系简介相关…

Leetcode刷题笔记题解(C++):328. 奇偶链表

思路&#xff1a;遍历链表生成奇链表和偶链表&#xff0c;然后拼接两个链表生成新的链表。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), ne…

JS基础之作用域链

JS基础之作用域链 作用域链作用域链函数创建函数激活总结 作用域链 当JavaScript代码执行一段可执行的代码&#xff08;execution code&#xff09;时&#xff0c;会创建对应的执行上下文&#xff08;execution context&#xff09;。 对于每个执行上下文&#xff0c;都有三个重…

恢复出厂设置后在 Android 上恢复照片的 6 种常用方法

恢复出厂设置可帮助您删除电子设备的所有信息并将其恢复到原始系统状态。但是&#xff0c;如果您不小心按下了恢复出厂设置按钮并从 Android 设备中删除了所有难忘的照片&#xff0c;该怎么办&#xff1f;好吧&#xff0c;您无需担心&#xff0c;因为可以通过以下一些方法来恢复…

Active Objects设计模式

Active是主动的意思&#xff0c;Active Object是主动对象的意思。主动对象就是拥有自己的独立线程。 Active Object模式不仅有自己的独立线程&#xff0c;还可以接受异步消息&#xff0c;并能返回处理结果。从标准的Active Objects设计入手&#xff0c;将一个接口的方法调用转换…

Apache Flink(十三):Flink History Server

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-06-系统工程

文章目录 1 系统工程概述2. 系统工程方法2.1 霍尔的三维结构2.2 切克兰德方法2.3 并行工程法2.4 综合集成法2.5 WSR系统方法3. 系统工程的生命周期3.1 各阶段1)探索性研究阶段2)概念阶段3)开发阶段4)生产阶段5)使用阶段6)保障阶段7)退役阶段3.2 生命周期方法1)计划驱动方…

缺钱走投无路怎么办

应对财务困境的有效方式 1. 审视并制定财务计划 评估个人或家庭的财务状况&#xff0c;分析收入和支出。制定财务预算&#xff0c;优先支付必要的支出&#xff0c;例如食品、住房和基本生活费用。 2. 与信用机构或服务提供商协商 如果无法按时支付账单或贷款&#xff0c;请…

区块链的可拓展性研究【05】闪电网络

1.闪电网络&#xff1a;闪电网络是一种基于比特币区块链的 Layer2 扩容方案&#xff0c;它通过建立一个双向支付通道网络&#xff0c;实现了快速、低成本的小额支付。闪电网络的交易速度非常快&#xff0c;可以达到每秒数万笔交易&#xff0c;而且交易费用非常低&#xff0c;几…

Spring中的经典的9种设计模式

Spring中的经典的9种设计模式 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在编写高质量、可维护的代码时&#xff0c;设计模式是我们的得力工具之一。今天&#xff0c;让我们一同探讨Spring中的经典…

04.仿简道云公式函数实战-QLExpress基础语法

1. 前言 小伙伴大家好&#xff0c;在上一篇文章我们简单初探了QLExpress表达式引擎&#xff0c;我们简单写了一个HelloWorld的程序&#xff0c;并成功的运行期望的结果。在本篇文章中我们来熟悉一下QLExpress的语法&#xff0c;因为我们在后面简道云公式实战的时候&#xff0c…

发布 Whatsonchain 上的 BSV20 插件

我们发布了 whatsonchain 上的 BSV20 插件来验证 BSV20 代币。 对于任何交易&#xff0c;whatsonchain 都可以通过以下网址打开&#xff1a; https://whatsonchain.com/tx/{hash}我们使用此 bsv20 v21 交易 打开 Whatsonchain 。 打开whatsonchain后你会看到BSV20插件&#x…

Linux系统安装MySQL8.0版本详细教程【亲测有效】

首先官网下载安装包&#xff1a;https://downloads.mysql.com/archives/community/ 一、上传到安装服务器 二、解压 tar -xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz三、移动位置并重新命名 mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql四、创建mysql用户…

解密布隆过滤器:数据领域的魔法阵

解密布隆过滤器&#xff1a;数据领域的魔法阵 前言布隆过滤器简介基本概念&#xff1a;核心原理&#xff1a;工作方式&#xff1a;注意事项&#xff1a; 设计原理数据结构&#xff1a;哈希函数&#xff1a;高效查找原理&#xff1a; 误判率和容量的权衡误判率问题&#xff1a;容…

官宣 | HelpLook已入驻企业微信应用市场

HelpLook正式入驻企业微信第三方应用市场。 HelpLook支持自定义域名与AI站内搜索&#xff0c;能够帮助企业微信用户搭建所见即所得的企业知识库、产品帮助中心、用户手册、企业博客。 | 怎么找到HelpLook并开始使用 在企业微信的第三方应用就可直接搜索HelpLook&#xff0c;添…

虚幻学习笔记14—重叠和碰撞事件

一、前言 在开发应用当中两个物体的重叠和碰撞事件会经常用到&#xff0c;在虚幻中哲两个有很大的区别&#xff0c;在官方文档碰撞概述其实已经讲了怎样发生碰撞和重叠&#xff0c;但是还是遗漏不少注意事项合细节&#xff0c;主要文档写的太粗糙了&#xff0c;这也让我在使用的…

C++Weekly - Code Review: O3DE Game Engine

对宣布开源的3D游戏引擎O3DE的简单Code Review。 A Quick Look At the Source To Amazons O3DE Game Engine. (Open source 3D Engine) 之前叫做Lumberyard。 Home - O3DE 1&#xff0c;pull up the code on github&#xff0c;用的是CLion 2&#xff0c;先查看CMake。用的…

docker---数据卷

docker---数据卷 数据卷: 容器与宿主机之间进行数据共享 数据卷是一个供容器使用的特殊的目录&#xff0c;容器的目录和宿主机的目录进行映射&#xff0c;主机和宿主机之间都可以对目录中的文件进行修改&#xff0c;双发同步生效。对镜像也没有影响。宿主机到容器实现数据迁移…

区块链是个啥

区块链算是一个散尽硝烟的热点&#xff0c; 现在说这个&#xff0c;有点冷水里冒热气的感觉。 先百度一下&#xff0c;区块链就是一个又一个区块组成的链条。每一个区块中保存了一定的信息&#xff0c;它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中..…

Docker Compose入门:打造多容器应用的完美舞台

Docker Compose 是一个强大的工具&#xff0c;它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景&#xff0c;并通过更为丰富和实际的示例代码&#xff0c;助您轻松掌握如何通过 Docker Compose 打…