ObservableCollection(T).CollectionChanged事件

use*_*051 3 c#

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

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

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

Moo*_*ice 5

不可以.可观察集合的要点是在修改事件时提升事件.虽然在您的用例中,希望在一段时间后得到通知,但并不是每个用例都会使课程过于复杂.

您可以做的是将可观察集合包装到您创建的自定义类中(例如DelayedObservableCollection<T>,与计时器一起使用,在添加/修改项目时引发其自身事件,然后不添加/修改任何项目)在指定的时间之后,或者添加/修改超过'x'的项目.