获取收集更改的通知

本文关键字:通知 获取 | 更新日期: 2023-09-27 18:09:20

我的类有一个公共List字段。当有人更改这个集合时,我想检测到。但是,围绕这个集合编写我自己的Add/Remove包装器似乎很浪费。是否有一种方法可以通过委托或类似的方式获得关于集合更改的通知?

获取收集更改的通知

使用ObservableCollection<T>代替

已经存在一个您所描述的集合,它叫做ObservableCollection

它有CollectionChanged事件,所以只要订阅你的事件处理程序在那里,我将得到调用每次项目被添加或从集合中删除。

BindingList<T>代替。它提供了一个ListChanged事件。在许多控件(如Listbox或Grid)中,它也被接受为DataSource

正如在这个回答中提到的,BindingList提供了比ObservableCollection更多的功能

如果您想要更改列表框中的列表,并且对该列表的更改会反映到UI中,您可以将BindingList<>设置为列表框的数据源,然后简单地操作列表。Listbox将处理ListChanged事件,并将显示更改,而无需手动执行。

如果你要在Winforms中使用它,你应该使用BindingList,如果你要在WPF应用程序中使用它,那么就使用ObservableCollection。