收到有关收集更改的通知

时间:2013-04-14 16:01:33

标签: c# collections delegates notifications

我的班级有一个公共列表字段。我想检测有人改变这个集合的时间。但是,在这个集合周围编写我自己的Add / Remove包装似乎很浪费。有没有办法通过代表或类似的东西获得有关集合变化的通知?

3 个答案:

答案 0 :(得分:3)

请改用ObservableCollection<T> 你可以找到参考here

答案 1 :(得分:0)

您已经描述过一个集合,它被称为ObservableCollection

它有CollectionChanged个事件,所以只需在那里订阅你的事件处理程序,每次在集合中添加或删除项目时都会调用它。

答案 2 :(得分:0)

请改用BindingList<T>。它提供ListChanged事件。它在许多控件(例如列表框或网格)中也被接受为DataSource

正如answer中所述,BindingList提供的内容远远超过ObservableCollection

如果要更改列表框中的列表并将对该列表的更改反映到UI,则可以将BindingList<>设置为列表框的数据源,然后只需操作列表即可。列表框将处理ListChanged事件并显示更改,而无需亲自手动执行。

如果你打算在Winforms中使用它,你应该使用BindingList,如果你打算在WPF应用程序上使用它,那么请使用ObservableCollection。