我检查了INotifyPropertyChanged但是如何使用它呢?

时间:2010-06-19 22:12:29

标签: c# .net events properties

post我找到了INotifyPropertyChanged并且我检查了它example但是我注意到我可以在没有工具INotifyPropertyChanged的情况下做同样的事情而且我可以定义我的事件并做同样的事情......

例如在

public string CustomerName
{
    get
    {
        return this.customerNameValue;
    }    
    set
    {
        if (value != this.customerNameValue)
        {
            this.customerNameValue = value;
            NotifyPropertyChanged("CustomerName");
        }
    }
}

我可以放任何字符串,它可以在没有任何验证的情况下通过,我已经做了类似的事情,如下所示

public delegate void ChangeHandler(string item);
public class DemoCustomer2 
{
    // These fields hold the values for the public properties.
    private Guid idValue = Guid.NewGuid();
    private string customerNameValue = String.Empty;
    private string phoneNumberValue = String.Empty;

    public event ChangeHandler OnChange;
    void CallOnChange(string item)
    {
        if (OnChange != null)
            OnChange(item);
    }

    // The constructor is private to enforce the factory pattern.
    private DemoCustomer2()
    {
        customerNameValue = "Customer";
        phoneNumberValue = "(555)555-5555";
    }

    // This is the public factory method.
    public static DemoCustomer2 CreateNewCustomer()
    {
        return new DemoCustomer2();
    }

    // This property represents an ID, suitable
    // for use as a primary key in a database.
    public Guid ID
    {
        get
        {
            return this.idValue;
        }
    }

    public string CustomerName
    {
        get
        {
            return this.customerNameValue;
        }
        set
        {
            if (value != this.customerNameValue)
            {
                this.customerNameValue = value;
                CallOnChange("CustomerName");
            }
        }
    }

    public string PhoneNumber
    {
        get
        {
            return this.phoneNumberValue;
        }
        set
        {
            if (value != this.phoneNumberValue)
            {
                this.phoneNumberValue = value;
                CallOnChange("PhoneNumber");
            }
        }
    }
}

我没有找到任何有用的使用它,但任何人都可以指导我,如果有任何真正有用的用途吗?

2 个答案:

答案 0 :(得分:2)

实施INotifyPropertyChanged的最大好处是与数据绑定的标准集成。特别是,MS UI技术WPF在很大程度上依赖于数据绑定,并且对实现INotifyPropertyChanged(和INotifyCollectionChanged)的类有很好的支持。

答案 1 :(得分:1)

这不是关于INotifyPropertyChanged的重要实现,而是现在有一种“官方”的方式在框架中做事。所以它基本上给你的是承诺,如果你实现了接口,你的实现类将适用于利用它的所有内置和第三方组件。当您使用自己的解决方案时,无法知道您的代码是否与其他人相处得很好。