2009-01-23 97 views
1

我有對象的層次結構(對象A,B),其中的每一個實現INotifyPropertyChanged使得...如何讓PropertyChanged事件冒泡?

A具有B型的一個成員, B具有℃的構件,C是bool類型

當C發生變化時,其PropertyChanged事件被觸發,但是這不會觸發B的屬性更改事件。因此A不會對B的變化做出反應。

有沒有好的方法來泡這個?

回答

0

這太好了 - 我不得不花更多的時間看它。謝謝。

我發現了一個不同的解決方案,但它有點破解。我只是將我的綁定路徑屬性設置爲嵌套類型。用我的上述示例,在我XAML(其具有對象A的一個DataContext)設置我爲...

{結合路徑= B.C}

鼓泡事件結合起來肯定是更優雅。

0

這是一個相當簡單的解決方案,但不能只訂閱PropertyChanged事件並傳播呼叫?

E.G.

MyContainedObject.PropertyChanged += PropertyChangedHandler; 

,然後在你的處理器:

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) 
{ 
    this.OnPropertyChanged(e.PropertyName); 
} 

當你的對象具有相同名稱的屬性這個偉大的工程。如果你有不同名稱的屬性,你將不得不做更多的工作來在屬性值之間進行轉換。

private void PropertyChangedHandler(object sender, PropertyChangedEventArgs e) 
{ 
    switch(e.PropertyName)  
    {   
    case "Property1": 
     this.OnPropertyChanged("ADifferentProperty1"); 
     break;     
    case "Property2":    
     this.OnPropertyChanged("ADifferentProperty2"); 
     break;     
    default:    
     this.OnPropertyChanged(e.PropertyName);   
     break;  
    } 
}