ObservableCollection(T).CollectionChanged事件

时间:2014-01-08 10:18:16

标签: c#

SelectedObjects.CollectionChanged += (s, e) =>
{
    Console.WriteLine(e.NewItems.Count);//prints out 1 if a new item is added
};

有一件事我不确定是为什么e.OldItems和e.NewItems是收藏品?

如果我每秒添加多个项目,事件会被触发foreach项目,输出总是1表示它被多次触发,但有没有办法延迟事件触发,例如在更改后5秒钟我可以在e.OldItems或e.NewItems中获得5秒内的所有变化吗?

1 个答案:

答案 0 :(得分:5)

没有。可观察集合的要点是在修改事件时引发事件。虽然在您的用例中,希望在一段时间后收到通知,但它不是每个用例,并且会使该类过于复杂。

你可以做的是将可观察集合包装到你创建的自定义类中(例如DelayedObservableCollection<T>,并且 - 与计时器一起 - 在添加/修改项目时引发它自己的事件,然后,在指定时间后没有添加/修改任何项目,或者添加/修改超过“x”项目。