2016-11-12 12 views
1

クラスAにいくつかのプロパティがあり、クラスBに があり、オブジェクトAを作成してDependencyPropertyに登録し、propertyChangedCallBackを登録します。 Aのオブジェクトが更新されたときに再作成されなかったときに起動します。 Aのサブプロパティがオブジェクト全体ではなく変更された場合でも、どのように呼び出されるように解決できますか?プロパティが更新されたときにコールプロパティがコールバックに戻る

+0

プロパティのプロパティがpropertyChangedCallBackによって処理されていません。あなたのプロパティは、クラスAオブジェクトへのポインタです。プロパティは、そのAオブジェクトへのBs参照を変更せずに変更されます。 – swe

答えて

3

「ディープリンクされた」プロパティの変更通知が組み込まれていません。あなたは自分でそれをしなくてはなりません。

あなたclass Aは別のイベントChanged(単なる例;あなたが好きなように名前を付ける)を含有する可能性が毎回そのメンバーの1つの隆起され、

public class A 
{ 
    private string name;  
    public string Name 
    { 
    get { return this.name; } 
    set 
    { 
     if (value != this.name) 
     { 
     this.name = value;   
     this.RaiseChanged(); 
     } 
    } 
    } 

    // ... more properties here ... 

    public event EventHandler Changed; 

    private void RaiseChanged() 
    { 
    this.Changed?.Invoke(this, EventArgs.Empty); 
    } 
} 

public class B 
{ 
    public A PropertyA { get; set; } 
} 
を変更し

あなたclass Bその後、PropertyA秒に加入していChangedイベントは、外の世界にPropertyAへの変更について通知します。 PropertyAの変更を正しく処理してください。

通知目的のために、PropertyAをDependencyPropertyにする必要はありません(追加使用は不要です)ので、INotyfyPropertyChangedに固執することができます。

これが役に立ちます。

+0

OnPropertyAChangeイベントの発生が必要です。 DependencyProperty PropertyAProperty = DependencyProperty.Register( "PropertyA"、typeof(A)、typeof(B)、新しいPropertyMetadata(null、OnPropertyAChange)); – Maryam

関連する問題