在生成的EF类中添加INotifyPropertyChange

时间:2012-11-18 18:27:41

标签: c# wpf entity-framework mvvm

因此,我的课程由EF自动生成:

//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Testje.Models
{
    using System;
    using System.Collections.Generic;

    public partial class Ploeg
    {
        public Ploeg()
        {
        }

        public int Id { get; set; }
        public string Naam { get; set; }
        public string Icon { get; set; }
    }
}

当其中一个属性发生变化时,我想做一个notifypropertychange。这可能以某种方式编辑这个生成的类吗?

3 个答案:

答案 0 :(得分:0)

这是可能的,但我强烈建议不要这样做! 在模型中添加INotifyPropertyChanged将导致a 关注点分离不好。

使用事件突出显示模型已更改。 看看这里是如何工作的:MSDN on standard event pattern

甚至更好:MSDN cites Albahari Bros on the event pattern

在您的viewmodel中,实现了INotifyProperty的更改。 让您的ViewModel比从您的模型中侦听事件,调整数据 并通过INotifyPropertyChanged

将其推送到您的视图

答案 1 :(得分:0)

是的,您可以使用名为PropertyChanged.Fody的NuGet包。安装包,然后创建另一个部分类,添加[ImplementPropertyChanged]属性,如下所示;

using PropertyChanged;

[ImplementPropertyChanged]
public partial class Ploeg
{
}

那就是它。

有关详细信息,请参阅GitHub

答案 2 :(得分:0)

我添加了

  

INotifyPropertyChanged

作为继承,似乎像一种魅力。 使用EF生成的类(Request_Comment生成EF类)

示例:

namespace Requesto
{
    public partial class Request_Comment : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, e);
            }
        }
    }

}