MvvmToolkit的使用
背景:MvvmLight不更新了,用Toolkit代替
1、首先下载好社区版本的NuGet包
2、ViewModel中需要继承ObservableObject,查看ObservableObject可以看到里面有实现好InotifyPropertyChanged。
3、对于属性的set,可以简写成一行:set => SetProperty(ref title, value);
4、还有RelayCommnd也是直接用就行

-- 这里有个需要注意的点就是:RelayCommand的第二个参数无法实时跟IsEnable属性绑定,因此需要在IsEnable更新的时候调用RelayCommand的NotifyCanExecuteChanged()方法进行通知Button
然后在8.0版本后推出了新的功能(要将ViewModel改为分布类)
[ObservableProperty]
private string title = "Hello world"; // 这个字段需要小写,同时这里是分布类,所以Title属性也是存在的,需要的话就直接调用就行,跟自己手动实现的一样的
--直接写个特性上去给字段就可以实现set的功能,也是包含通知的

-- 将鼠标放到上面就提示实现了这些
对IsEnable是需要通知Button通知CanExecute的,那就再加上特性[NotifyCanExecuteChangedFor(nameof(ButtonClickCommand))]
特性[RelayCommand]
将这个特性加到方法上,就可以自动生成一个方法名+Command的RelayCommand
在分析器中可以看到
-- 因此在xmal中直接绑定就行
那么像上面的RelayCommand的第二个参数CanExecute怎么办呢?
[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(ButtonClickCommand))] // 添加上这个才能通知Command更新
private bool isEnable;[RelayCommand(CanExecute = nameof(CanButtonClick))] // 指向方法更加灵活,原本就是Action
private void ButtonClick() // 可以异步,比如设置个几秒后再改变Title
{Title = "Goodbye";
}private bool CanButtonClick() => IsEnable;
异步版本
[RelayCommand(CanExecute = nameof(CanButtonClick))]
private async Task ButtonClick()
{await Task.Delay(1500);Title = "Goodbye";
}
-- 实现的就是等个1.5s再操作,模拟一下数据的处理需要的时间,这个时候可以拓展一下地在前端显示个转圈圈,实现起来就是绑定一下ButtonClickCommand的IsRunning属性就行
特性[NotifyCanExecuteChangedFor]的使用就是可以通过属性通知属性
title更新-->Caption也更新
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Caption))]
private string title = "Hello world"; // 这个字段需要小写public string Caption => $"Title: {Title}";
通过反编译可以看出来是有实现的
相关文章:
MvvmToolkit的使用
背景:MvvmLight不更新了,用Toolkit代替 1、首先下载好社区版本的NuGet包 2、ViewModel中需要继承ObservableObject,查看ObservableObject可以看到里面有实现好InotifyPropertyChanged。 3、对于属性的set,可以简写成一行ÿ…...
分布式【一致性Hash算法简介】
一致性Hash是一种特殊的Hash算法,由于其均衡性、持久性的映射特点,被广泛的应用于负载均衡领域,如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。 一致性Hash算法简介 在了解一致性Hash算法之前,先来讨论一下Ha…...
PHP命令行脚本接收传入参数的三种方式
1.使用$argv or $argc参数接收,会把文件本身计算在内 $argv: 以数组形式接收保存参数 $argc:保存参数个数 <?php echo "接收到{$argc}个参数"; print_r($argv); //执行 //php /usr/local/php/bin/php test.php 接收到1个…...
【STM32】STM32学习笔记-ADC单通道 ADC多通道(22)
00. 目录 文章目录 00. 目录01. ADC简介02. ADC相关API2.1 RCC_ADCCLKConfig2.2 ADC_RegularChannelConfig2.3 ADC_Init2.4 ADC_InitTypeDef2.5 ADC_Cmd2.6 ADC_ResetCalibration2.7 ADC_GetResetCalibrationStatus2.8 ADC_StartCalibration2.9 ADC_GetCalibrationStatus2.10 A…...
1329:【例8.2】细胞 广度优先搜索
1329:【例8.2】细胞 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 一矩形阵列由数字0 到9组成,数字1到9 代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如: 4 10 0234500067 1034560500 2045600671 00000000…...
9款免费网络钓鱼模拟器详解
根据《2023年网络钓鱼状况报告》显示,自2022年第四季度至2023年第三季度,网络钓鱼电子邮件数量激增了1265%。其中,利用ChatGPT等生成式人工智能工具和聊天机器人的形式尤为突出。 除了数量上的激增外,网络钓鱼攻击模式也在不断进…...
linux cpu、memory 、io、网络、文件系统多种类型负荷模拟调测方法工具
目录 一、概述 二、stress介绍和使用 2.1 介绍 2.2 使用 三、stress-ng介绍和使用 3.1 介绍 3.2 使用 3.3 实例 四、sysbench 4.1 介绍 4.2 使用 五、lmbench 5.1 介绍 5.2 使用 一、概述 今天介绍两款cpu负荷调试工具,用来模拟多种类型的负载。主要用来模拟CPU…...
1018:奇数偶数和1028:I love 闰年!和1029:三角形判定
1018:奇数偶数 要求:输入一个整数,判断该数是奇数还是偶数。如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。 输入样例:8 输出样例:even 程序流程图:…...
数据密集型应用系统设计--第2章 数据模型与查询语言
一、引言 数据模型可能是开发软件最重要的部分,而且还对如何思考待解决的问题都有深远的影响。 大多数应用程序是通过一层一层叠加数据模型来构建的。每一层都面临的关键问题是:如何将其用下一层来表示? 1.作为一名应用程序开发人员,观测现实…...
yolo 分割label格式标注信息图片显示可视化查看
参考: https://github.com/ultralytics/ultralytics/issues/3137 https://blog.csdn.net/weixin_42357472/article/details/135218349?spm=1001.2014.3001.5501 需要把坐标信息在图片上显示 代码 1)只画出了坐标边缘 import cv2 import numpy as np from random impor…...
霍兰德职业兴趣测试 60题(免费版)
霍兰德职业兴趣理论从兴趣的角度出发探索职业指导的问题,明确了职业兴趣的人格观念,使得人们对于职业兴趣的认识有了质的变化。在霍兰德职业兴趣理论提出来之前,职业兴趣和职业环境二者分别独立存在,正是霍兰德的总结,…...
MySQL之视图内连接、外连接、子查询
目录 一、视图 1.1 含义 2.1 视图的基本语法 二、案例 三、思维导图 一、视图 1.1 含义 虚拟表,和普通表一样使用 视图(view)是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据…...
以报时机器人为例详细介绍tracker_store和event_broker
报时机器人源码参考[1][2],本文重点介绍当 tracker_store 类型为 SQL 时,events 表的表结构以及数据是如何生成的。以及当 event_broker 类型为 SQL 时,events 表的表结构以及数据是如何生成的。 一.报时机器人启动 [3] Rasa 对话系统启动方…...
理解JavaScript事件循环机制
JavaScript作为前端开发的核心语言之一,其事件循环机制是实现异步编程的关键。本文将深入探讨JavaScript事件循环机制,帮助您更好地理解它是如何工作的,以及如何在前端开发中充分利用这一机制。 1. 什么是事件循环? JavaScript是…...
自定义View之重写onMeasure
一、重写onMeasure()来修改已有的View的尺寸 步骤: 重写 onMeasure(),并调用 super.onMeasure() 触发原先的测量用 getMeasuredWidth() 和 getMeasuredHeight() 取到之前测得的尺寸,利用这两个尺寸来计算出最终尺寸使用 setMeasuredDimensio…...
专为Mac用户设计的思维导图软件MindNode 2023 for Mac助您激发创意!
在现代快节奏的生活中,我们经常需要整理思绪、规划项目、记录灵感。而思维导图作为一种高效的思维工具,能够帮助我们更好地整理和展现思维。现在,我们介绍一款强大而直观的思维导图软件——MindNode 2023 for Mac,助您拓展思维边界…...
Linux命令——用户和权限相关
文章目录 1 用户管理1.1 用户标识符1.2 用户添加1.3 用户删除1.4 用户配置文件1.4.1 passwd文件1.4.2 shadow文件1.4.3 group文件 2 密码管理3 权限管理 1 用户管理 1.1 用户标识符 用户标识符主要是UID和GID,UID表示用户id,GID表示用户组id。在登录的…...
linux反汇编工具: ida pro、rizinorg/cutter; ubuntu 22 flameshot延迟截图 以应对下拉菜单
rizinorg/cutter rizinorg/cutter 是 命令行反汇编工具 rizinorg/rizin 的图形化界面, 这比 ida pro跑在kvm虚拟机中方便多了, ubuntu22.04下直接下载Cutter-v2.3.2-Linux-x86_64.AppImage后即可运行,如下图: 注意 有个同名的报废品: radare2/Cutter 即 radare2的图形化界…...
【INTEL(ALTERA)】使用NiosV/m 处理器,niosv-download 为什么会失败?
说明 在英特尔 Quartus Prime Pro Edition 软件 23.3 版及更高版本中将 Nios V 处理器软件下载到非流水线Nios V/m 处理器时,可能会出现此问题。 这是由于处理器限制,仅影响非流水线Nios V/m 处理器。 以下其他处理器不受此限制的影响: 管道…...
【无线通信专题】NFC通信模式及可能的应用方式
在文章【无线通信专题】NFC基本原理中我们讲到了NFC工作模式。其中NFC工作模式主要有三种,读写模式、卡模拟模式、点对点模式。 NFC通信模式丰富,NFC Forum定义了三种NFC设备:通用NFCForum设备、读写器设备和标签设备。这些NFC设备可以在三种通信模式下运行,并对应用案例进…...
IntelliJ Conf:JetBrains Koog Java原生AI Agent框架实战
文章目录前言:Java程序员的"Agent焦虑"终于有解了认识Koog:不是又一个LangChain的Java版环境准备:5分钟让项目跑起来实战:从Hello World到智能客服第一步:定义工具(Tool)第二步&#…...
WebLaTeX:重构LaTeX创作流程的颠覆式解决方案
WebLaTeX:重构LaTeX创作流程的颠覆式解决方案 【免费下载链接】WebLaTex A complete alternative for Overleaf with VSCode Web Git Integration Copilot Grammar & Spell Checker Live Collaboration Support. Based on GitHub Codespace and Dev contai…...
Protege新手避坑指南:搞懂‘类’、‘属性’和‘推理’到底怎么用(附常见错误排查)
Protege新手避坑指南:搞懂‘类’、‘属性’和‘推理’到底怎么用(附常见错误排查) 第一次打开Protege时,满屏的术语和复杂的界面可能会让你感到不知所措。作为一款强大的本体编辑工具,Protege确实有着陡峭的学习曲线。…...
3MF格式与Blender从入门到精通:重塑3D打印工作流
3MF格式与Blender从入门到精通:重塑3D打印工作流 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 概念解析:为什么3MF正在取代STL成为行业新标准 …...
FLUX.1-dev像素生成器效果对比:不同Scale值对像素结构强度影响实测
FLUX.1-dev像素生成器效果对比:不同Scale值对像素结构强度影响实测 1. 像素艺术生成技术概述 像素幻梦(Pixel Dream Workshop)是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。它采用16-bit现代明亮风格设计,为创作者提供…...
基于ANPC型三电平逆变器的VSG并网及参数自适应控制
ANPC虚拟同步机(VSG)并网(参数自适应控制),基于ANPC型三电平逆变器的参数自适应控制,采用电压电流双闭环控制,中点电位平衡控制,且实现VSG并网。 1.VSG参数自适应 2.VSG并网 3.提供相…...
3大场景解析:开源工具如何重构MobaXterm的专业版体验
3大场景解析:开源工具如何重构MobaXterm的专业版体验 【免费下载链接】MobaXterm-Keygen MobaXterm Keygen Originally by DoubleLabyrinth 项目地址: https://gitcode.com/gh_mirrors/mob/MobaXterm-Keygen 在开发者的日常工作中,终端工具的选择…...
全网最详细的AI产品经理学习路线,非常详细收藏这一篇就够了
前言 AI产品经理作为一个新兴且热门的职业,不仅需要具备传统产品经理的能力,还需要对AI技术有深入的理解和应用。本学习路线旨在帮助有志于成为AI产品经理的学习者系统地掌握所需的知识和技能。 前排提示,文末有大模型AGI-CSDN独家资料包哦…...
告别混乱!用CANoe的arxml数据库高效管理车载网络信号(附Signal/PDU/Frame创建全流程)
告别混乱!用CANoe的arxml数据库高效管理车载网络信号(附Signal/PDU/Frame创建全流程) 当车载网络从简单的CAN总线发展到包含FlexRay、以太网等多协议混合架构时,工程师们面临的信号管理复杂度呈指数级增长。一个典型的域控制器项目…...
人工智能高质量数据集概述
人工智能高质量数据集,是指经过标准化采集、清洗、标注、质检、脱敏及结构化处理,能够直接用于人工智能模型开发、训练与优化,且能有效提升模型性能、保障模型泛化能力,具备高可用性、高一致性、高安全性和高适配性的结构化或非结…...
