CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名為 Microsoft.Toolkit.Mvvm)是一個現代、快速且模塊化的 MVVM 庫。它支持:.NET Standard 2.0、 .NET Standard 2.1 和 .NET 6(UI Framework 不支持) ...
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 所有屬性改變
1 public partial class DataViewModel2 : ObservableObject 2 { 3 4 }
1 /* 2 [ObservableProperty]標記後,會自動生成屬性(大寫命名),例如:下麵會自動生成Title 3 4 註意:這個私有變數命名:必須是小寫開頭,或者下劃線,或者m_ 5 */ 6 7 [ObservableProperty] 8 private string title = "hello";
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";
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 }
B.MCAD學習
C.代碼閱讀總結
D.ASP.NET狀態管理
E.DB(資料庫)
F.WAP
G.WinForm
H.Flex
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
貼子以"現狀"提供且沒有任何擔保,同時也沒有授予任何權利!
本文版權歸作者所有,歡迎轉載!
原創技術文章和心得,轉載註明出處!這也是對原創者的尊重!