正在添加但未删除的项的ObservableCollection事件

本文关键字:ObservableCollection 事件 删除 添加 | 更新日期: 2023-09-27 18:01:07

当一个项目被添加到ObservableCollection时,有没有一种方法可以触发事件,但当一个被删除时却不能?

我相信没有实际的事件,但也许有一种方法可以过滤CollectionChanged事件?

正在添加但未删除的项的ObservableCollection事件

CollectionChanged事件包括对集合执行的操作(例如,添加或删除(以及受影响的项目等信息。

如果执行了Add,只需在处理程序中添加一个检查即可执行所需的操作。

ObservableCollection<T> myObservable = ...;
myObservable.CollectionChanged += (sender, e) =>
{
    if (e.Action == NotifyCollectionChangedAction.Add)
    {
        // do stuff
    }
};

我认为,对ObservableCollection类进行子类划分并创建自己的ItemAdded事件应该可以工作。

public class MyObservableCollection<T> : ObservableCollection<T>
{
    public event EventHandler<NotifyCollectionChangedEventArgs> ItemAdded;
    public MyObservableCollection()
    {
        CollectionChanged += MyObservableCollection_CollectionChanged;
    }
    void MyObservableCollection_CollectionChanged(object sender,            NotifyCollectionChangedEventArgs e)
    {
        if (e.Action == NotifyCollectionChangedAction.Add)
            ItemAdded(sender, e);
    }
}