2009-06-08 6 views
8

私はいくつかのプロパティを持つC#で新しいクラスを設計しています。私のユーザーは、それぞれがいつ変わるかを知りたいと思うでしょう。何が良いですか? INotifyPropertyChangedまたは別々に*変更されたイベントを持っていますか?

良い選択はありますか? INotifyPropertyChangedスタイルの実装、または自分のプロパティに対応する個別のイベントを持つだけですか?または両方?

答えて

9

今後は、INotifyPropertyChangedが標準であり、WPFではより優れたサポートを得ています。私はBindingList<T>INotifyPropertyChangedを尊重していることを思い出しているようです(リフレクタのHookPropertyChangedUnhookPropertyChanged参照)。

これは、イベントごとに1つではなく、1つのイベントフックしか必要としないため、さらに効率的です。プロパティごとに1つのハンドラを必要とするのではなく、 EventHandlerListと静的キーのセットを経由しなければならないという厄介)

古いスタイルは主に二日酔いです。

+0

ありがとう、私はインターフェイス名を修正しました。 –

+0

しかし、あなたはこれを使って自分自身を見ることができますか?つまり、文字列の比較を行い、何が変わったのか把握していますか? –

+0

はい、基本的には。または、通常は文字列であるマッピング名を持つUIコントロールと比較します。 –

2

INotifyPropertyChangedインターフェイスを実装すると、バインディングソースがプロパティの変更を自動的にリッスンし、コントロールを更新するという追加の利点が得られます。

これを試してください。 INotifyPropertyChangedインタフェースを使用せずにクラスを作成し、何かにバインドします。たとえば、そのプロパティの1つをTextBoxのTextプロパティにバインドすることができます。 TextBoxのテキストではなく、ボックスにバインドされているインスタンス内のそれぞれのプロパティの値を変更するボタンを追加します。実行し、ボタンをクリックします。テキストボックスには変更が通知されません。クラスにINotifyPropertyChangedを実装すると、PropertyChangedを介してプロパティのセッターがその変更を通知するようにしても、テストを繰り返した後で、TextBoxの更新が表示されます。

関連する問題