C# WPFのバインディング その3

前々回前回の続き

 

バインディングについて知っておくべき仕組みの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メソッドを呼び出して変更を通知する。