DataContextとBinding-変更を反映する

簡単なサンプルでは、データの表示だけを行っていますが、データを更新した場合の動作を確認してみます。
確認する為に、簡単なサンプルでのコードを基本に、ボタンを押下すると姓名が漢字からカナに変わるプログラムを作成していきます。
(WPF関連の内容なのかな?と思いつつ公開します)

画面レイアウト bookmark

画面レイアウト

上記画面レイアウトのXAMLは、以下のようになっています。

コード bookmark

DataContextの設定をLoadedイベントで行い、btnUpdateのClickイベントで、現在のDataContextに設定されている姓名をカナに変更するコードを記述します。

特別難しいコードは無いと思うので、実行してボタンをクリックしてみます。ボタンをクリックしても変更が反映されないのが確認できると思います。
これは、DataContextに設定されているCustomerのFirstName?LastName?が変更されていないのではなく、単に画面表示に反映されていないだけのことです。
画面に反映されない理由は、Customerのプロパティが変更されても、バインド先に変更を通知する手段(イベント)を実装していない為です。

INotifyPropertyChanged?インターフェイスの実装 bookmark

プロパティの値が変更された事を通知する為に、CustomerクラスにINotifyPropertyChanged?インターフェイスを実装します。
(表示の関係上、System.ComponentModel?名前空間をインポートしています。)

23、35行目でPropertyChanged?イベントを発生させ、プロパティの値が変更された事を通知します。
CustomerクラスにINotifyPropertyChanged?インターフェイスを実装して、プログラムを実行すると、ボタンクリックと同時に表示が変更されるのを確認できます。

コメント bookmark