11

我正在开发一个 WPF MVVM 应用程序。我注意到的是,我必须编写大量的样板代码来声明命令(通过 WPF 团队的 MVVM 工具包中的 DelegateCommands)、附加属性和附加行为。是否有任何策略可以减少我必须编写的样板代码量?

谢谢!

4

3 回答 3

11

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

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

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

于 2009-08-11T19:33:07.710 回答
3

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

以下是如何使用它;

using PropertyChanged;

[ImplementPropertyChanged]
public partial class Order
{
}

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

有关更多信息,请参阅GitHub

于 2016-11-04T16:18:06.613 回答
2

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

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

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

希望能帮助到你!

于 2011-08-08T21:15:24.120 回答