我正在研究WPF MVVM应用程序。我注意到的是,我必须编写过多的样板代码来声明命令(通过WPF Team的MVVM Toolkit中的DelegateCommands),附加属性和附加行为。有没有可用的策略来减少我必须编写的样板代码量?
谢谢!
答案 0 :(得分:9)
就个人而言,我喜欢Josh Smith的MVVM Foundation library。他在那里使用了一个名为RelayCommand
的类,但它听起来与工具包中的DelegateCommand
非常相似。它允许您创建命令并通过lambda表达式传递 CanExecute 和 Execute 逻辑。这将有助于减少许多样板代码。
在his blog中,Josh还讨论了如何使用通用属性观察器来避免PropertyChanged
事件处理的一些混乱方面。这也值得研究。
老实说,很多所谓的“样板”代码正在为您的应用程序建立一个非常动态和灵活的基础。如果您正在制作一个易于维护的小型应用程序,您可能会问自己,“我是否甚至需要在此处应用MVVM模式?”另一方面,如果您正在制作更大的应用程序生命周期很长,需要大量维护,然后这个样板代码将为您节省时间。
答案 1 :(得分:2)
我发现我正在编写大量代码来通过INotifyPropertyChanged接口实现更改通知。为了减少这种情况,我找到了一个名为PropertyChanged.Fody的NuGet包,它使得将INotifyPropertyChanged添加到类属性非常简单。
以下是如何使用它;
using PropertyChanged;
[ImplementPropertyChanged]
public partial class Order
{
}
现在,该类中的任何公共属性都将具有属性更改通知。这对于通过数据库生成的EF类特别有用,因为您不能完全控制您的实体。
有关详细信息,请参阅GitHub。
答案 2 :(得分:1)
我能想到的最明显的策略是使用代码片段和/或文件模板。它不会减少代码行数,但至少可以节省时间。
您可以自己制作(或者找一些可以直接导入Visual Studio)。
我个人使用Laurent Bugnion的mvvm light工具包,我使用他的代码片段/文件模板,它们确实为我节省了很多时间。我认为大多数流行的mvvm工具包都有类似的东西。
希望它有所帮助!