我有對象的層次結構(對象A,B),其中的每一個實現INotifyPropertyChanged
使得...如何讓PropertyChanged事件冒泡?
A具有B型的一個成員, B具有℃的構件,C是bool類型
當C發生變化時,其PropertyChanged
事件被觸發,但是這不會觸發B的屬性更改事件。因此A不會對B的變化做出反應。
有沒有好的方法來泡這個?
我有對象的層次結構(對象A,B),其中的每一個實現INotifyPropertyChanged
使得...如何讓PropertyChanged事件冒泡?
A具有B型的一個成員, B具有℃的構件,C是bool類型
當C發生變化時,其PropertyChanged
事件被觸發,但是這不會觸發B的屬性更改事件。因此A不會對B的變化做出反應。
有沒有好的方法來泡這個?
這太好了 - 我不得不花更多的時間看它。謝謝。
我發現了一個不同的解決方案,但它有點破解。我只是將我的綁定路徑屬性設置爲嵌套類型。用我的上述示例,在我XAML(其具有對象A的一個DataContext)設置我爲...
{結合路徑= B.C}
鼓泡事件結合起來肯定是更優雅。
這是一個相當簡單的解決方案,但不能只訂閱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;
}
}