有没有办法在将项目添加到 ObservableCollection 时触发事件,而不是在删除项目时触发事件?
我相信没有实际的事件,但也许是一种过滤 CollectionChanged 事件的方法?
有没有办法在将项目添加到 ObservableCollection 时触发事件,而不是在删除项目时触发事件?
我相信没有实际的事件,但也许是一种过滤 CollectionChanged 事件的方法?
该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);
}
}