PropertyChanged に対応したメソッドがすでに定義されているわけではありません。INotifyPropertyChanged インターフェース自体は、PropertyChanged というイベントの宣言のみを提供しています。実際のプロパティ変更時の通知は、開発者が PropertyChanged イベントを手動で発火する必要があります。
PropertyChanged の基本的な仕組み
PropertyChangedはあくまでイベントです。これを発火するためのメソッド(例えばOnPropertyChanged)は、開発者が自分で定義する必要があります。OnPropertyChangedというメソッド名はよく使われる慣習的な名前で、自動で定義されているものではありません。- この補助メソッド(
OnPropertyChanged)を使ってPropertyChangedイベントを発火することで、データバインディングされた UI 要素がプロパティの変更を受け取って再描画します。
例: INotifyPropertyChanged の実装
例えば、以下のように OnPropertyChanged メソッドを自分で定義し、プロパティ変更時に PropertyChanged イベントを発火させます。
using System.ComponentModel;
public class SampleClass : INotifyPropertyChanged
{
private string _name;
public string Name
{
get => _name;
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged(nameof(Name)); // プロパティ変更通知
}
}
}
// INotifyPropertyChanged のイベント
public event PropertyChangedEventHandler PropertyChanged;
// PropertyChanged イベントを発火する補助メソッド
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}


コメント