簡體   English   中英

減少MVVM WPF應用程序中的樣板代碼以獲取附加屬性,命令等?

[英]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表達式傳遞CanExecuteExecute邏輯。 這將有助於減少許多樣板代碼。

他的博客中 ,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM