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

时间:2015-02-12 06:09:31

标签: c# wpf xaml silverlight windows-rt

我有一个TEntity类,它绑定到View:

 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 事件。我没有在我的代码中创建任何处理程序。如何创建和订阅该处理程序?

1 个答案:

答案 0 :(得分:0)

您的代码实现了事件'PropertyChanged'的提升,而不是订阅。

您的代码的使用者可以订阅该事件,并提供处理程序。

e.g。

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);
    }

}