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 + "に変更されました");
}