2012-02-11 8 views
0

私の銀色のアプリケーションでは、コンテナとフィールドの2つのクラスがあります。コンテナクラスをmvvmパターンで通知する方法

コンテナにはフィールドのリストが含まれています。今、 フィールド(リスト内)が というメッセージを受け取ると、コンテナオブジェクトに通知する場合は、 ロジックを実行してください。

フィールドオブジェクトにはContainerの参照が含まれてはなりません。私はこれをINotifyPropertyChangedを使用して達成する必要があります。

INotifyPropertyChangedを使用して簡単なソリューションを提案してください。

答えて

2

コンテナオブジェクトは、それぞれの子フィールドオブジェクトのPropertyChangedイベントにサブスクライブすることができます。

プロパティが変更されていない場合は、Fieldオブジェクトに独自のカスタムイベントを直接実装できます。

あなたの状況を知らずに例を挙げるのは難しいですが、ここにはあります。

例えば擬似コード:(Containerオブジェクト上)

public void AddField(Field field) 
{ 
    // attach to the new fields property changed event 
    field.PropertyChanged += OnFieldPropertyChanged; 

    // add the new field to this container's collection 
    this.Fields.Add(field); 
} 

private void OnFieldPropertyChanged(object sender, PropertyChangedEventArgs e) 
{ 
    // do something 
} 

またObservableCollectionsをチェックアウトすることができます。

+0

コード例がありますか? – user1172822

+0

子オブジェクトのプロパティ変更イベントをサブスクリプションに追加するときにサブスクライブするコード例を追加しました。 注:プロパティ変更イベントを具体的に見ている場合は、観測可能なコレクションとこの質問を参照する必要があります。 http://stackoverflow.com/questions/269073/observablecollection-that-also-monitors-changes-onコレクション内の要素 – Andy

関連する問題