2010-08-05 126 views
1

Observable集合中的對象的屬性是否需要PropertyChangedEvent?例如:ObservableCollection中的屬性是否需要PropertyChangedEvent

public class MyObject 
{ 
    public int MyProperty { get; set;} 
} 

public class MyViewModel 
{ 
    ObservableCollection<MyObject> MyObjects = new ObservableCollection<MyObject>(); 
} 

從我所知道的,如果我執行MyObjects[0].MyProperty = 1;然後我的綁定不會發生。但是,如果我打電話MyObjects.Add(new MyObject());綁定確實發生。

回答

2

在第一行中,MyProperty存在於MyObjects集合中的第一個對象上,而不是集合本身。因此,如果希望WPF監聽MyObject實例的該屬性的更改,則MyObject類需要實現INotifyPropertyChanged。

+0

這就是我的想法。好,謝謝! – 2010-08-05 19:58:41

2

您需要在對象INotifyPropertyChanged中實現,因爲ObservableCollection僅通知收集更改,但不通知對象更改。

如果您正在使用WPF,則可以從DependencyObject派生您的MyObject。完成後,您可以將您的屬性聲明爲DependencyProperties(VisulStudio有一個很好的代碼片段),這會自動進行通知。如果你正在創建ViewModels,無論如何,這是有道理的。

+0

這也是一個很好的解決方案。謝謝! – 2010-08-05 20:20:03

相關問題