翻譯|使用教程|編輯:龔雪|2022-09-06 09:47:14.640|閱讀 155 次
概述:本文將為大家介紹如何使用DevExpress WPF控件中的MVVM代碼生成器輕松創(chuàng)建一個(gè)WPF視圖模型,歡迎下載相關(guān)組件體驗(yàn)~
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress WPF擁有120+個(gè)控件和庫(kù),將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過(guò)DevExpress WPF能創(chuàng)建有著強(qiáng)大互動(dòng)功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來(lái)新一代支持觸摸的解決方案。
從DevExpress WPF控件v21.1版本開(kāi)始,包含了一個(gè),這個(gè)代碼生成器允許您在編譯時(shí)為視圖模型生成樣板代碼。
Microsoft在 C# 9中引入了 ,您可以使用Source Generator分析用戶代碼并在編譯期間生成新的源文件,我們利用這項(xiàng) Microsoft 技術(shù)幫助您開(kāi)發(fā)視圖模型并立即獲得生成的代碼。
請(qǐng)注意,DevExpress MVVM框架已經(jīng)包含了多種創(chuàng)建View Models的方法(例如基于Emit Reflection的POCO View Models在運(yùn)行時(shí)創(chuàng)建View Models)。
這種新方法為您提供了許多重要的好處:
要生成完整的視圖模型,您需要定義一個(gè)指定所需邏輯的存根視圖模型類,View Model Code Generator 分析您的實(shí)現(xiàn)和應(yīng)用屬性以生成最終的 View Model 類,以及所有必需的樣板代碼。
基礎(chǔ)的視圖模型
using DevExpress.Mvvm.CodeGenerators; [GenerateViewModel] partial class ViewModel { [GenerateProperty] string username; [GenerateProperty] string status; [GenerateCommand] void Login() => Status = "User: " + Username; bool CanLogin() => !string.IsNullOrEmpty(Username); }
生成的視圖模型
partial class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler? PropertyChanged; protected void RaisePropertyChanged(PropertyChangedEventArgs e) => PropertyChanged?.Invoke(this, e); public string? Username { get => username; set { if(EqualityComparer<string?>.Default.Equals(username, value)) return; username = value; RaisePropertyChanged(UsernameChangedEventArgs); } } public string? Status { get => status; set { if(EqualityComparer<string?>.Default.Equals(status, value)) return; status = value; RaisePropertyChanged(StatusChangedEventArgs); } } DelegateCommand? loginCommand; public DelegateCommand LoginCommand { get => loginCommand ??= new DelegateCommand(Login, CanLogin, true); } static PropertyChangedEventArgs UsernameChangedEventArgs = new PropertyChangedEventArgs(nameof(Username)); static PropertyChangedEventArgs StatusChangedEventArgs = new PropertyChangedEventArgs(nameof(Status)); }
最佳的發(fā)展路線是將由每個(gè)單獨(dú)的WPF項(xiàng)目驅(qū)動(dòng):
DevExpress技術(shù)交流群6:600715373 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)