從關於OnCollectionChanged的MSDN:「在添加,刪除,更改,移動項目或刷新整個列表時發生。C#ObservableCollection OnCollectionChanged在項目發生更改時不會觸發
我改變一個屬性附加到駐留在我的集合中的obj,但OnCollectionChanged沒有被解僱。我正在實施obj類的iNotifyPropertyChanged。
public class ObservableBatchCollection : ObservableCollection<BatchData>
{
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
foreach (BatchData item in e.NewItems)
{
}
}
base.OnCollectionChanged(e);
}
public ObservableBatchCollection(IEnumerable<BatchData> items)
: base(items)
{
}
}
對我來說,讀,當集合中的項目更改,如對象的屬性,此事件應觸發。但是,這不是。我希望能夠知道自定義集合中的項目何時發生更改,以便我可以根據需要對其執行計算。
有什麼想法?
是的,通過「改變」他們的意思是做'collection [i] = newItem;',而不是改變舊的項目。 – CodeNaked
哦。對我來說,文檔有點不清楚。 「...當一件物品被......改變時」,對我來說,意思是「當一件物品被改變時」。呵呵。謝謝大家。 – Yatrix
你是對的 - 目前還不清楚,因爲它措辭不正確。 「在添加,刪除,更改*,移動或整個列表刷新時發生 - 」逗號的位置表示您應該將其讀爲:「添加項目時(項目存在時)刪除,(當一個項目被更改),(當一個項目被移動時),或當整個列表被刷新時「。 – 2013-06-24 16:58:59