如何在替换ObservableCollection的项目时收到通知

时间:2013-01-17 12:51:17

标签: c# wpf observablecollection

我想为可观察集合添加一个事件处理程序,每次在其中添加,删除或更新项目时都会触发该事件处理程序。

在添加或删除项目时会引发CollectionChanged事件,但在更换项目时不会引发事件。用这样的东西

obsList[5] = MyUpdatedCustomObject;

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我想,你不能这样做,索引器:

public T this[int index] { get; set; }

继承自Collection<T>类,这个索引器不是虚拟的来改变它的行为!

但实际上,当我在一个非常小的应用程序上测试时,事件会在你的情况下触发,你有什么问题,请提供一些额外的代码!

答案 1 :(得分:-3)

private ObsersvableCollection<Type> _MyCollection = new ObservableCollection<Type>();

_MyCollection.CollectionChanged += new NotifyCollectionChangedEventHandler(_MyCollection_CollectionChanged);

protected void _MyCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    switch(e.Action)
    {
        case NotifyCollectionChangedAction.Add:
            //use e.NewItems to get items added.     
        break;
        case NotifyCollectionChangedAction.Remove:
            //use e.OldItems to get items removed.
        break;

    }
}