翻譯|行業資訊|編輯:龔雪|2022-05-12 10:19:02.737|閱讀 215 次
概述:本文主要介紹DevExpress WPF的視圖模型生成器是如何支持Prism & MVVM Light的,歡迎下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
復雜視圖中的視圖模型包含許多屬性、命令和重復的接口實現,為所有這些成員編寫代碼不僅低效,而且可能會導致拼寫錯誤等。幸運的是,代碼編寫不斷發展,新技術可以讓您節省時間,保持代碼庫緊湊、干凈和可讀。編譯時生成器就是這樣一種技術,生成器在您輸入代碼時無縫工作,甚至無需構建項目或執行任何操作即可生成代碼。
DevExpress WPF的MVVM 代碼生成器自動創建基于方法的命令、基于字段的屬性,并實現 INotifyPropertyChanged、INotifyPropertyChanging、IDataErrorInfo、ISupportServices 和 ISupportParentViewModel 等接口。對于使用 DevExpress MVVM 框架的用戶來說,這是一個很好的補充。盡管如此,我們的組件也與其他 MVVM 框架兼容,如果您使用的是 Prism 或 MVVM Light,仍然可以使用我們的代碼生成器。
Prism View Model代碼生成器可幫助您使用所有基本視圖模型功能:命令、屬性和通知,它使用 Prism 的 DelegateCommand 類來生成命令。 除此之外,生成器可以自動實現 Prism 的 IActiveAware 接口,將 GenerateViewModel 分配給您的模型類并將 ImplementIActiveAware 設置為 true 就足夠了:
Base View Model
[GenerateViewModel(ImplementIActiveAware = true)] partial class ViewModel { // ... void OnIsActiveChanged() { // ... } }
Generated View Model
partial class ViewModel : INotifyPropertyChanged, IActiveAware { // ... bool isActive; public bool IsActive { get => isActive; set { isActive = value; OnIsActiveChanged(); IsActiveChanged?.Invoke(this, EventArgs.Empty); } } public event EventHandler? IsActiveChanged; // ... }
您需要聲明 DevExpress.Mvvm.CodeGenerators.Prism 命名空間才能使用 Prism 代碼生成器。
除了標準的視圖模型功能,MVVM 生成器可以自動創建一個 Messenger 并實現 ICleanup 接口:
Base View Model
[GenerateViewModel(ImplementICleanup = true)] partial class ViewModel { // ... void OnCleanup() { // ... } }
Generated View Model
partial class ViewModel : INotifyPropertyChanged, ICleanup { // ... protected IMessenger MessengerInstance { get; set; } = Messenger.Default; public virtual void Cleanup() { MessengerInstance.Unregister(this); OnCleanup(); } // ... }
聲明 DevExpress.Mvvm.CodeGenerators.MvvmLight 命名空間來將 View Model Generator 與 MVVM Light 一起使用。
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
DevExpress技術交流群6:600715373 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網