[英]Reducing boilerplate code in MVVM WPF app for attached properties, commands, etc?
我正在研究WPF MVVM應用程序。 我注意到的是,我必須編寫過多的樣板代碼來聲明命令(通過WPF Team的MVVM Toolkit中的DelegateCommands),附加屬性和附加行為。 有沒有可用的策略來減少我必須編寫的樣板代碼的數量?
謝謝!
就個人而言,我喜歡Josh Smith的MVVM Foundation庫 。 他在那里使用了一個名為RelayCommand
的類,但它聽起來與工具包中的DelegateCommand
非常相似。 它允許您創建命令並通過lambda表達式傳遞CanExecute和Execute邏輯。 這將有助於減少許多樣板代碼。
在他的博客中 ,Josh還討論了如何使用通用屬性觀察器來避免PropertyChanged
事件處理的一些混亂方面。 這也值得研究。
老實說,很多所謂的“樣板”代碼正在為您的應用程序建立一個非常動態和靈活的基礎。 如果您正在制作一個易於維護的小型應用程序,您可能會問自己, “我是否需要在此處應用MVVM模式?” 另一方面,如果您制作的應用程序壽命較長且需要大量維護,那么這個樣板代碼將為您節省時間。
我發現我正在編寫大量代碼來通過INotifyPropertyChanged接口實現更改通知。 為了減少這種情況,我找到了一個名為PropertyChanged.Fody的NuGet包,它使得將INotifyPropertyChanged添加到類屬性非常簡單。
這是如何使用它;
using PropertyChanged;
[ImplementPropertyChanged]
public partial class Order
{
}
現在,該類中的任何公共屬性都將具有屬性更改通知。 這對於通過DB首先生成的EF類特別有用,因為您無法完全控制實體。
有關更多信息,請參閱GitHub 。
我能想到的最明顯的策略是使用代碼片段和/或文件模板。 它不會減少代碼行,但至少可以節省時間。
你可以自己制作(或者找一些你可以直接導入你的Visual Studio)。
我個人使用Laurent Bugnion的mvvm light工具包,我使用他的代碼片段/文件模板,它們確實為我節省了很多時間。 我認為大多數流行的mvvm工具包都有類似的東西。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.