2015-02-12 76 views
0

我有一個類類型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事件。我沒有在我的代碼中創建任何處理程序。那個處理程序是如何適當地創建和訂閱的?

回答

0

你的代碼實現了引發'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

相關問題