PropertyChangedEventHandler类型的事件处理程序如何订阅PropertyChanged事件?

问题描述:

我有一个类类型TEntity的这势必视图:PropertyChangedEventHandler类型的事件处理程序如何订阅PropertyChanged事件?

public class TEntity 
    { 
    private string _name; 
    public string Name 
    { 
     get {return _name;} 
     set {_name = value; NotifyPropertyChanged("Name");} 
    } 
    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
    { 
     if(PropertyChanged != null) 
     { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

我还没有订阅在我的代码的PropertyChanged事件的任何地方,但每当我改变名称财产事件的价值处理程序获取订阅PropertyChanged事件。我没有在我的代码中创建任何处理程序。那个处理程序是如何适当地创建和订阅的?

你的代码实现了引发'PropertyChanged'事件,而不是订阅。

由您的代码的消费者订阅该事件并提供处理程序。

例如

public class DisplayEntiry 
{ 
    public void Initialize() 
    { 
     var entity = new Entity(); 
     entity.PropertyChanged += DisplayName; 

     entity.Name = "Alan Bennett"; 
     // This will cause DisplayName to write "Alan Bennett" to the console 
    } 

    private void DisplayName(object sender, PropertyChangedEventArgs e) 
    { 
     Console.Writeline(e.Name); 
    } 

} 
+0

我明白了你的观点。我的问题是,只要我为绑定到UI的属性赋值,就会自动创建事件处理函数,即PropertyChanged!= null。我的代码中没有任何地方写过处理程序。所以我很好奇处理程序是如何创建的。 – Suraj 2015-02-12 10:59:27