我有一个SQL数据库,并正在实现一个WPF UI来更新它。如果我使用EF5从数据库生成类,那么如何在生成的类和属性上实现INotifyPropertyChanged,以便我可以轻松地将它们与UI绑定?是否有一种简单的方法来实现这个?
谢谢
我有一个SQL数据库,并正在实现一个WPF UI来更新它。如果我使用EF5从数据库生成类,那么如何在生成的类和属性上实现INotifyPropertyChanged,以便我可以轻松地将它们与UI绑定?是否有一种简单的方法来实现这个?
谢谢
有一个名为PropertyChanged.Fody的NuGet包,它使将INotifyPropertyChanged添加到类属性变得非常简单。一旦安装了该包,只需将[ImplementPropertyChanged]属性添加到任何类或部分类中,该包就会自动为您添加INotifyPropertyChanged。
这里是一个简单的示例:
using PropertyChanged;
[ImplementPropertyChanged]
public partial class Order
{
}
请查看GitHub获取更多相关信息。
ImplementPropertyChanged
ๅทฒ่ขซ AddINotifyPropertyChangedInterface
ๅไปฃใ - Midas最近我需要使用Winforms完成同样的任务。如果你不想像bde建议的那样遵循MVVM模式,你可以修改t4模板,在生成的实体上实现INotifyPropertyChanged。
INotifyPropertyChanged
接口的基类(使用您可能已经定义的非生成部分类)。向这个基类添加一个方法,它使用空字符串作为PropertyName
引发PropertyChanged
事件。然后,每当在EF生成的类实例上调用此方法时,您WPF UI中的所有修改过的属性将被刷新。
class Asset { public int id {get;set;} }
,我会编写class AssetWrap : Asset, INotifyPropertyChanged { public int idNotify { get { return id; } set{ id=value; NotifyPropertyChanged();} }}
如果是这样,那么看起来非常耗时。 - Steveclass AssetWrap : INotifyPropertyChanged { private Asset _asset; public int idNotify { get { return _asset.id; } set{ _asset.id=value; NotifyPropertyChanged();} }
(这并不完整)。是的,有时候使用 MVVM 模式会导致很多乏味的样板代码,但如果需要进行一些中间处理或更改模型的显示方式,它确实会产生回报。我在下面放了一个链接,里面有一些减少这种工作量的想法。 - WildCrustacean