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