C#にてClass内でのプロパティ変更の通知イベント(INotifyPropertyChanged)の実装方法を説明します。

 

INotifyPropertyChangedの実装方法

基本的なプロパティ通知の方法ですが、結構めんどうです。

public class PersonProperty : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;

                OnPropertyChanged("Name");
            }
        }
    }
    private string _name;

    public string Age
    {
        get { return _Age; }
        set
        {
            if (_Age != value)
            {
                _Age = value;

                OnPropertyChanged("Age");
            }
        }
    }
    private string _Age;

    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

呼び出し側

private void button1_Click(object sender, EventArgs e)
{
    PersonProperty Person = new PersonProperty();

    Person.PropertyChanged += PersonPropertyChanged;
    Person.Name = "みかん";
}

Private void PersonPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    // 文字列でプロパティ名を判別
    if (e.PropertyName != "Name") return;

    var p = (PersonProperty)sender;
    MessageBox.Show(p.Name + "に変更されました");
}