&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");
            }
        }
    }
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS