How INotifyPropertyChanged's PropertyChanged's?

У меня есть следующий код, и он отлично работает.

public partial class MainWindow : Window
{
    Person person;

    public MainWindow()
    {
        InitializeComponent();

        person = new Person { Name = "ABC" };

        this.DataContext = person;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        person.Name = "XYZ";
    }
}

class Person: INotifyPropertyChanged
{
    string name;

    public string Name
    { 
        get
        {
            return name;
        } 
        set
        {
            name = value;
            OnPropertyChanged("Name");
        } 
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string strPropertyName)
    {
        if(null != PropertyChanged)
        {
            PropertyChanged(this, 
                            new PropertyChangedEventArgs(strPropertyName));
        }           
    } 
}

Когда я создаю объект "person" в конструкторе MainWindow, он присваивает значение свойству "Name" человека, тогда событием PropertyChanged будет NULL.

Если тому же самому свойству класса "person" "Name", назначенному в событии Button_Click, то событие "PropertyChanged" будет иметь значение NOT NULL и будет указывать на OnPropertyChanged.

Мой вопрос - как событие "PropertyChanged" назначается методу OnPropertyChanged?

Заранее спасибо.

6
задан Syed 16 September 2011 в 02:06
поделиться