Ste*_*eve 14 wpf xaml entity-framework
我有一个SQL DB,并实现了一个WPF UI来更新它.如果我使用EF5从DB生成类,我如何在生成的类和属性上实现INotifyPropertyChanged,以便我可以使用UI轻松地绑定它们?有没有一种简单的方法来实现这一目标?
谢谢
Wil*_*ean 13
如果遵循推荐的WPF MVVM模式,则可以将生成的类视为Model,然后编写实现INotifyPropertyChanged的ViewModel包装器.ViewModel类将访问您的数据库类并公开可以在XAML中绑定到UI的属性.
正如您的评论中所指出的,这可能导致编写样板代码的大量工作,但有一些方法可以解决这个问题.有些想法,请参阅此问题.
虽然最初需要做更多工作,但如果您需要进行任何中间格式化或处理,或者您需要在不影响UI的情况下更改数据库类,则MVVM模式从长远来看肯定会得到回报.
有一个名为 PropertyChanged.Fody 的 NuGet 包,它使得将 INotifyPropertyChanged 添加到类属性非常简单。安装包后,只需将 [ImplementPropertyChanged] 属性添加到任何类或部分类,包将为您添加 INotifyPropertyChanged。
这是它使用的一个简单示例;
using PropertyChanged;
[ImplementPropertyChanged]
public partial class Order
{
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅GitHub。
小智 5
我最近需要做同样的事情,但是使用Winforms.如果您不想按照bde的建议遵循MVVM模式,则可以修改t4模板以在生成的实体上实现INotifyPropertyChanged.
这个答案对我有帮助:https://stackoverflow.com/a/12192358/1914530