INotifyCollectionChanged
只有當您的集合中的元素添加或刪除後,如果集合中的元素中的屬性發生更改,則不會更新您的UI。
所以如果你很樂意跟蹤整個元素的變化,那麼INotifyCollectionChanged
就足夠了,任何進一步的粒度,你需要在你的屬性設置器中實現INotifyPropertyChanged
。
另一點值得注意的是,如果您使用ObservableCollection
來安置您的列表,則已經爲您執行INotifiyCollectionChanged
。
編輯:
以下是微軟的起飛;
您可以枚舉實現IEnumerable
接口的任何集合。但是,要設置動態綁定,以便集合中的插入或 刪除自動更新UI,則集合必須實現INotifyCollectionChanged
接口。這個接口暴露了一個事件,當底層集合發生變化時應該引發這個事件。
WPF提供了ObservableCollection(Of T)
類,它是一個內置 實現數據收集暴露出 INotifyCollectionChanged
接口。支持綁定屬性
注意,要全力支持 從源對象,對應目標傳輸數據值,每個集合中的對象 還必須 實現INotifyPropertyChanged
接口。
實現自己的收藏之前, 考慮使用ObservableCollection(Of T)
或現有 集合類之一,如List(Of T)
,Collection(Of T)
,並 BindingList(Of T)
,等等。如果您有高級方案 並且想要實現您自己的集合,請考慮使用IList
,其中 提供了一個非泛型對象集合,可以通過索引訪問各個對象,從而獲得最佳性能。
從..
http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections
有趣。無論如何,元素視圖模型是(迄今爲止)不可變的。我看不到在視圖中顯示的視圖模型 - 但後來我實現了IEnumerable,這就實現了。實現最小接口集合的要點只是爲了確保只讀模式。元素數量非常少(<100),所以性能不會成爲問題。 – 2013-03-07 00:27:17