&tag(INotifyPropertyChanged);
*目次 [#d8940e75]
#contents
*参考情報 [#f172909d]
-[[silverlight - What's the concept behind INotifyPropertyChanged? - Stack Overflow:http://stackoverflow.com/questions/3557922/whats-the-concept-behind-inotifypropertychanged]]…INotifyPropertyChangedの必要性などについて。
*定義 [#x1dc794c]
#pre{{
namespace System.ComponentModel
{
// 概要:
// プロパティ値が変更されたことをクライアントに通知します。
public interface INotifyPropertyChanged
{
// 概要:
// プロパティ値が変更されたときに発生します。
event PropertyChangedEventHandler PropertyChanged;
}
}
}}
*使用方法 [#k6bd252d]
-WPFでいうところのモデルに実装する。
-モデルクラスのPropertyChangedはBindingされたときにListBoxやTextBoxからセットされる。これによりListBoxやTextBoxが変更通知をうけとれるようになる。
*典型的な実装 [#c5fa41f0]
-クラスにINotifyPropertyChangedインターフェイスをimplementsする。
-下記NotifyPropertyChanged()のようなメソッドを作る(名前はなんでもよい)。
-変更を通知したいプロパティのsetメソッドの実装を変更し、値がかわっていたらNotifyPropertyChanged()をよびだすようにする。
#pre{{
public class DemoCustomer : INotifyPropertyChanged
{
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private string companyNameValue = String.Empty;
public string CompanyName
{
get
{
return this.companyNameValue;
}
set
{
if (value != this.companyNameValue)
{
this.companyNameValue = value;
NotifyPropertyChanged("CompanyName");
}
}
}
}}