Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 减少MVVM WPF应用程序中附加属性、命令等的样板代码?_C#_Wpf_Mvvm_Attached Properties_Attachedbehaviors - Fatal编程技术网

C# 减少MVVM WPF应用程序中附加属性、命令等的样板代码?

C# 减少MVVM WPF应用程序中附加属性、命令等的样板代码?,c#,wpf,mvvm,attached-properties,attachedbehaviors,C#,Wpf,Mvvm,Attached Properties,Attachedbehaviors,我正在开发一个WPF MVVM应用程序。我注意到的是,为了声明命令(通过WPF团队的MVVM工具包中的delegateCommand)、附加属性和附加行为,我必须编写大量的样板代码。是否有任何策略可以减少我必须编写的样板代码的数量 谢谢 就我个人而言,我喜欢乔希·史密斯的。他在那里使用了一个名为RelayCommand的类,但它听起来非常类似于工具箱中的DelegateCommand。它允许您创建命令,并通过lambda表达式传递CanExecute和Execute逻辑。这将有助于减少大量样板代

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


谢谢

就我个人而言,我喜欢乔希·史密斯的。他在那里使用了一个名为
RelayCommand
的类,但它听起来非常类似于工具箱中的
DelegateCommand
。它允许您创建命令,并通过lambda表达式传递CanExecute和Execute逻辑。这将有助于减少大量样板代码

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


诚然,很多所谓的“样板”代码为你的应用程序建立了一个非常动态和灵活的基础。如果您正在制作一个小型的、易于维护的应用程序,您可能会问自己,“我甚至需要在这里应用MVVM模式吗?”另一方面,如果您正在制作一个使用寿命较长且需要大量维护的大型应用程序,然后,这个样板代码将为您节省时间。

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

您可以自己制作(或者找到一些可以直接导入到VisualStudio中的)

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


希望有帮助

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

下面是如何使用它

using PropertyChanged;

[ImplementPropertyChanged]
public partial class Order
{
}
现在,类中的任何公共属性都将具有属性更改通知。这对于通过DB first生成的EF类特别有用,因为您不能完全控制实体


请参阅更多信息。

给我们举一个你认为“样板”的例子。一个人的样板是另一个人的业务逻辑。我使用片段来创建它们。这些片段创建了#区域,因此我不必全部查看。链接到博客文章: