バインディングについて知っておくべき仕組みの1つプロパティの更新通知について。
コントロールは表示されるタイミングでデータから値を取ってきて適切に表示してくれるし、
コントロールを操作する(TextBoxに入力するなど)とデータの値を更新してくれる。
但し、ソースからデータの値を変えた場合など、それだけではコントロールは値が更新された事を知らないので表示に反映されない。値が更新された事を明示的に通知する仕組みが必要になる。
プロパティの更新通知を行う為INotifyPropertyChangedインターフェイスを実装する必要がある。
INotifyPropertyChangedの実装
public class SampleData : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string name) { if (null == this.PropertyChanged) return; this.PropertyChanged(this, new PropertyChangedEventArgs(name)); } private string _SampleText; public string SampleText { get { return _SampleText; } set { _SampleText = value; OnPropertyChanged("SampleText"); } } }
INotifyPropertyChangedインターフェースを実装 (1行目)
データクラスにINotifyPropertyChangedインターフェースを実装。
PropertyChangedイベントを追加する。
OnPropertyChangedメソッド (4~8行目)
プロパティが変更された時にPropertyChangedイベントを呼び出す為のメソッド。
PropertyChangedイベントにはパラメータとしてプロパティ名を渡す。
プロパティのsetter (15行目)
値を変更した後、OnPropertyChangedメソッドを呼び出して変更を通知する。
コメントをお書きください