2016-11-12 220 views
1

我有一個具有一些屬性的類A, 在類B中,我創建了一個對象A並將它創建爲DependencyProperty併爲其註冊propertyChangedCallBack。但是當它更新時不是在重新創建對象時觸發。 即使當A的子屬性被改變而不是整個對象時,我怎樣才能解決它呢?當屬性已更新時,調用屬性更改回調

+0

財產的財產不beeing propertyChangedCallBack處理。你的屬性是一個指向A類對象的指針,它的屬性發生變化而不會改變B對其A對象的引用 – swe

回答

3

沒有內置的「深度鏈接」屬性更改通知。你必須自己做。

class A可能包含另一個事件Changed(只是一個例子,只要你喜歡的名字吧),這是上調,每次它的一個成員改變

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事件觸發。 public static readonly DependencyProperty PropertyAProperty = DependencyProperty.Register(「PropertyA」,typeof(A),typeof(B),new PropertyMetadata(null,OnPropertyAChange)); – Maryam

相關問題