翻譯|行業(yè)資訊|編輯:龔雪|2022-05-12 10:19:02.737|閱讀 222 次
概述:本文主要介紹DevExpress WPF的視圖模型生成器是如何支持Prism & MVVM Light的,歡迎下載最新版體驗!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
復(fù)雜視圖中的視圖模型包含許多屬性、命令和重復(fù)的接口實現(xiàn),為所有這些成員編寫代碼不僅低效,而且可能會導(dǎo)致拼寫錯誤等。幸運的是,代碼編寫不斷發(fā)展,新技術(shù)可以讓您節(jié)省時間,保持代碼庫緊湊、干凈和可讀。編譯時生成器就是這樣一種技術(shù),生成器在您輸入代碼時無縫工作,甚至無需構(gòu)建項目或執(zhí)行任何操作即可生成代碼。
DevExpress WPF的MVVM 代碼生成器自動創(chuàng)建基于方法的命令、基于字段的屬性,并實現(xiàn) INotifyPropertyChanged、INotifyPropertyChanging、IDataErrorInfo、ISupportServices 和 ISupportParentViewModel 等接口。對于使用 DevExpress MVVM 框架的用戶來說,這是一個很好的補(bǔ)充。盡管如此,我們的組件也與其他 MVVM 框架兼容,如果您使用的是 Prism 或 MVVM Light,仍然可以使用我們的代碼生成器。
Prism View Model代碼生成器可幫助您使用所有基本視圖模型功能:命令、屬性和通知,它使用 Prism 的 DelegateCommand 類來生成命令。 除此之外,生成器可以自動實現(xiàn) Prism 的 IActiveAware 接口,將 GenerateViewModel 分配給您的模型類并將 ImplementIActiveAware 設(shè)置為 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 代碼生成器。
除了標(biāo)準(zhǔn)的視圖模型功能,MVVM 生成器可以自動創(chuàng)建一個 Messenger 并實現(xiàn) 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+個控件和庫,將幫助您交付滿足甚至超出企業(yè)需求的高性能業(yè)務(wù)應(yīng)用程序。通過DevExpress WPF能創(chuàng)建有著強(qiáng)大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產(chǎn)品,還是以數(shù)據(jù)為中心的商業(yè)智能產(chǎn)品,都能通過DevExpress WPF控件來實現(xiàn)。
DevExpress技術(shù)交流群6:600715373 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)