根据MSDN中关于OnCollectionChanged的说明:“在项被添加、移除、更改、移动或整个列表被刷新时发生。”
我修改了一个存储在我的集合中对象上的属性,但OnCollectionChanged事件并未触发。我在该对象类中实现了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