wpf CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南
CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名为 Microsoft.Toolkit.Mvvm)是一个现代、快速且模块化的 MVVM 库。
它支持:.NET Standard 2.0、 .NET Standard 2.1 和 .NET 6(UI Framework 不支持)
文档地址:
https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/mvvm/
github:
https://github.com/CommunityToolkit/dotnet
1.安装
nuget中安装:CommunityToolkit.Mvvm
特别提示:不要再安装下面这2个旧版本的包了,官方都提示过期了,推荐用CommunityToolkit.Mvvm8.1
2.使用
CommunityToolkit.Mvvm8.1最令人惊喜的是它提供的源生成器功能,它极大简化我们的mvvm代码
后面会整理一个系列文字逐一说明,下面简单感受一下:
大部分通过标记一个属性就可以实现某个功能,这个很方便快捷,推荐
常用的总结
1.继承ObservableObject 并且类标记是分部类partial
2.私有变量标记属性 [ObservableProperty]
3.NotifyCanExecuteChangedFor 通知依赖命令
NotifyPropertyChangedFor 通知依赖属性
4.RelayCommand 定义命令
5.OnPropertyChanged 手动通知属性更新
6.ButtonClickCommand.NotifyCanExecuteChanged() 手动通知命令更新
7.OnLastNameChanging OnLastNameChanged 某个属性改变
8.OnPropertyChanged 所有属性改变
定义viewmodel
1 public partial class DataViewModel2 : ObservableObject
2 {
3
4 }
ObservableProperty标记属性
1 /*
2 [ObservableProperty]标记后,会自动生成属性(大写命名),例如:下面会自动生成Title
3
4 注意:这个私有变量命名:必须是小写开头,或者下划线,或者m_
5 */
6
7 [ObservableProperty]
8 private string title = "hello";
NotifyPropertyChangedFor通知依赖属性
1 public string Caption
2 {
3 get
4 {
5 return string.Format( "Title:{0}-{1}" , Title , LastName );
6 }
7 }
8
9
10 [ObservableProperty]
11 [NotifyPropertyChangedFor( nameof( Caption ) )]
12 private string lastName = "abc";
NotifyCanExecuteChangedFor通知依赖命令
1 /*
2 [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
3 NotifyCanExecuteChangedFor是通知依赖命令(触发命令),相当于set中ButtonClickCommand.NotifyCanExecuteChanged();
4 */
5
6 [ObservableProperty]
7 [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
8 private bool isEnabled = false;
命令
1 /*
2 RelayCommand是定义命令,自动生成的命令名是方法名+Command,并且初始化
3 例如:下面的会自动生成ButtonClickCommand
4
5 CanExecute是指定一个判断方法,判断是否可用
6 */
7
8 [RelayCommand( CanExecute = nameof( CanButton ) )]
9 void ButtonClick ()
10 {
11 //点击按钮,修改标题
12 Title = "hello(改)";
13 }
14
15 bool CanButton ()
16 {
17 return IsEnabled;
18 }
异步命令
1 [RelayCommand]
2 async Task AsyncButtonClick ()
3 {
4 await Task.Delay( 4800 );
5 Title = "hello(Task改)";
6 }
7
8
9
10 [RelayCommand]
11 async Task AsyncButtonParClick ( double val )
12 {
13 await Task.Delay( 4800 );
14 Title = $"hello(Task改):{val}";
15 }
wpf CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南的更多相关文章
- (转载)Linux网络配置和setup工具包安装
查看网卡是否正常安装 命令:lspci |grep Ether 1.修改网卡配置 命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth ...
- 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator-更新至Prism7.1
原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator-更新至Prism7.1 事件聚合器EventAggregator [7.1updated]除了app部分,没 ...
- WPF学习08:MVVM 预备知识之COMMAND
WPF内建的COMMAND是GOF 提出的23种设计模式中,命令模式的实现. 本文是WPF学习07:MVVM 预备知识之数据绑定的后续,将说明实现COMMAND的三个重点:ICommand Comm ...
- 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?
原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WP ...
- python调用word2vec工具包安装和使用指南
python调用word2vec工具包安装和使用指南 word2vec python-toolkit installation and use tutorial 本文选译自英文版,代码注释均摘自本文, ...
- 大数据应用日志采集之Scribe 安装配置指南
大数据应用日志采集之Scribe 安装配置指南 大数据应用日志采集之Scribe 安装配置指南 1.概述 Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用.它 ...
- MVVM Light Toolkit使用指南
原文:MVVM Light Toolkit使用指南 原文地址: https://blog.csdn.net/ldld1717/article/details/77040077 概述 MVVM Lig ...
- [转载]SharePoint 2013测试环境安装配置指南
软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...
- centOS安装Mysql指南
centOS安装Mysql指南 说明:使用操作系统centOS6.4 32位系统:mysql:mysql-5.7.10-linux-glibc2.5-i686.tar.gz; 一.准备 下载mysql ...
- Cadence OrCad Allegro SPB 16.6 下载及安装破解指南
Cadence公司的电子设计自动化产品涵盖了电子设计的整个流程,包括系统级设计,功能验证,IC综合及布局布线,模拟.混合信号及射频IC设计,全定制集成电路设计,IC物理验证,PCB设计和硬件仿真建模等 ...
随机推荐
- 创建一个Openpyxl
from openpyxl import Workbook wb = Workbook(r'C:\Users\yjiang3\Desktop\23.xlsx') ws = wb.active from ...
- 搭建CosId服务
CosId介绍 CosId 旨在提供通用.灵活.高性能的分布式 ID 生成器.项目中还是很好集成,CosId本身采用spring boot与spring cloud框架,如果项目是这类的微服务框架,那 ...
- nodejs中router的使用
一.划分文件使用Router 创建一个routes目录,专门用于放置路由文件,通过module.exports导出供外部使用. // 引入类 const Koa =require('koa'); // ...
- Spring AOP @before@after@around@afterreturning@afterthrowing执行顺序
public Object aop(Method method,Object object) { try { try { /*doAround start*/ doBefore(); method.i ...
- 查看shell 用户连接数
w | grep pts |wc -l
- C# async、await、Task 探讨
test02.ProntOut(); ///*第五题*/ static class test02 { public static async void ProntOut() { Console.Wri ...
- 整数划分问题(Java递归)
整数划分问题(Java递归) 文章目录 整数划分问题(Java递归) 0. 问题描述 1.递归式 2.代码 3.参考 0. 问题描述 整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+- ...
- MySQL 分组排序,取第一条
select t1.* from coal_installed_capacity t1where NOT EXISTS (select * from coal_installed_capacity t ...
- mysql 5.7启动报错
mysql 5.7 yum 安装完启动报错,如图: 处理步骤:查看/etc/my.cnf 数据存放目录,将里面内容移除到/opt后,启动mysql正常.
- group by和union,Laravel分页
$res3 = DB::table('users') ->join('user_folow_boutiques', 'user_folow_boutiques.user_id', '=', 'u ...