减少MVVM WPF应用程序中的样板代码以获取附加的属性,命令等?

我正在研究WPF MVVM应用程序。 我注意到的是,我必须编写大量的样板代码来声明命令(通过WPF Team的MVVM Toolkit中的DelegateCommands),附加属性和附加行为。 有没有可用的策略来减少我必须编写的样板代码的数量?

谢谢!

就个人而言,我喜欢Josh Smith的MVVM Foundation库 。 他在那里使用了一个名为RelayCommand的类,但它听起来与工具包中的DelegateCommand非常相似。 它允许您创建命令并通过lambda表达式传递CanExecuteExecute逻辑。 这将有助于减少许多样板代码。

在他的博客中 ,Josh还讨论了使用通用属性观察器来避免PropertyChanged事件处理的一些混乱方面。 这也值得研究。

老实说,很多所谓的“样板”代码正在为您的应用程序建立一个非常动态和灵活的基础。 如果您正在制作一个易于维护的小型应用程序,您可能会问自己, “我是否需要在此处应用MVVM模式?” 另一方面,如果您制作的应用程序寿命较长且需要大量维护,那么这个样板代码将为您节省时间。

我能想到的最明显的策略是使用代码片段和/或文件模板。 它不会减少代码行,但至少可以节省时间。

您可以自己制作它们(或者找一些可以直接导入Visual Studio的)。

我个人使用Laurent Bugnion的mvvm light工具包,我使用他的代码片段/文件模板,它们确实为我节省了很多时间。 我认为大多数流行的mvvm工具包都有类似的东西。

希望能帮助到你!

我发现我正在编写大量代码来通过INotifyPropertyChanged接口实现更改通知。 为了减少这种情况,我发现了一个名为PropertyChanged.Fody的NuGet包,它使得将INotifyPropertyChanged添加到类属性非常简单。

这是如何使用它;

 using PropertyChanged; [ImplementPropertyChanged] public partial class Order { } 

现在,该类中的任何公共属性都将具有属性更改通知。 这对于通过DB首先生成的EF类特别有用,因为您无法完全控制实体。

有关更多信息,请参阅GitHub 。