翼度科技»论坛 编程开发 .net 查看内容

wpf CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
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. 1 public partial class DataViewModel2 : ObservableObject
  2. 2 {
  3. 3
  4. 4 }
复制代码
 
ObservableProperty标记属性
  1. 1 /*
  2. 2 [ObservableProperty]标记后,会自动生成属性(大写命名),例如:下面会自动生成Title
  3. 3
  4. 4 注意:这个私有变量命名:必须是小写开头,或者下划线,或者m_
  5. 5 */
  6. 6
  7. 7 [ObservableProperty]
  8. 8 private string title = "hello";
复制代码
 
NotifyPropertyChangedFor通知依赖属性
  1. 1 public string Caption
  2. 2 {
  3. 3     get
  4. 4     {
  5. 5         return string.Format( "Title:{0}-{1}" , Title , LastName );
  6. 6     }
  7. 7 }
  8. 8
  9. 9
  10. 10 [ObservableProperty]
  11. 11 [NotifyPropertyChangedFor( nameof( Caption ) )]
  12. 12 private string lastName = "abc";
复制代码
 
NotifyCanExecuteChangedFor通知依赖命令
  1. 1 /*
  2. 2         [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
  3. 3 NotifyCanExecuteChangedFor是通知依赖命令(触发命令),相当于set中ButtonClickCommand.NotifyCanExecuteChanged();
  4. 4 */
  5. 5
  6. 6 [ObservableProperty]
  7. 7 [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
  8. 8 private bool isEnabled = false;
复制代码
 
命令
  1. 1 /*
  2. 2 RelayCommand是定义命令,自动生成的命令名是方法名+Command,并且初始化
  3. 3 例如:下面的会自动生成ButtonClickCommand
  4. 4
  5. 5 CanExecute是指定一个判断方法,判断是否可用
  6. 6 */
  7. 7
  8. 8 [RelayCommand( CanExecute = nameof( CanButton ) )]
  9. 9 void ButtonClick ()
  10. 10 {
  11. 11     //点击按钮,修改标题
  12. 12     Title = "hello(改)";
  13. 13 }
  14. 14
  15. 15 bool CanButton ()
  16. 16 {
  17. 17     return IsEnabled;
  18. 18 }
复制代码
 
异步命令
  1. 1 [RelayCommand]
  2. 2 async Task AsyncButtonClick ()
  3. 3 {
  4. 4     await Task.Delay( 4800 );
  5. 5     Title = "hello(Task改)";
  6. 6 }
  7. 7
  8. 8
  9. 9
  10. 10 [RelayCommand]
  11. 11 async Task AsyncButtonParClick ( double val )
  12. 12 {
  13. 13     await Task.Delay( 4800 );
  14. 14     Title = $"hello(Task改):{val}";
  15. 15 }
复制代码
 
A.Sql Server2005 Transact-SQL 新兵器学习
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex
我的好文推荐FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
MS SQL数据库备份和恢复存储过程(加强版本)
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现)
WAP开发资料站(最新更新)
自定义格式字符串随笔(IFormattable,IFormatProvider,ICustomFormatter三接口的实现)
Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法)
Mcad学习笔记之序列化(2进制和Soap序列化)
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨)
ASP.NET状态管理之一(概括篇)
Flex,Fms学习笔记

希望上面提到的知识对您有所提示,同时欢迎交流和指正
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!


来源:https://www.cnblogs.com/aierong/archive/2023/04/08/17299452.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具