【发布时间】:2013-04-14 16:01:33
【问题描述】:
我的班级有一个公共列表字段。我想检测何时有人更改此集合。但是,围绕这个集合编写我自己的 Add/Remove 包装器似乎很浪费。有没有办法通过代表或类似的方式获取有关集合更改的通知?
【问题讨论】:
标签: c# collections delegates notifications
我的班级有一个公共列表字段。我想检测何时有人更改此集合。但是,围绕这个集合编写我自己的 Add/Remove 包装器似乎很浪费。有没有办法通过代表或类似的方式获取有关集合更改的通知?
【问题讨论】:
标签: c# collections delegates notifications
请改用ObservableCollection<T>
你可以找到参考here。
【讨论】:
您所描述的集合已经存在,名为ObservableCollection。
它有CollectionChanged 事件,所以只需在那里订阅你的事件处理程序,每次从集合中添加或删除项目时我都会被调用..
【讨论】:
请改用BindingList<T>。它提供了一个ListChanged 事件。在许多控件(例如列表框或网格)中,它也被接受为 DataSource。
正如answer 中提到的,BindingList 提供的功能远远超过 ObservableCollection
如果您想更改列表框中的列表并将对该列表的更改反映到 UI,您可以将 BindingList<> 设置为列表框的数据源,然后简单地操作列表。 Listbox 将处理ListChanged 事件并显示更改,而无需您自己手动执行。
如果你要在 Winforms 中使用它,你应该使用 BindingList,如果你要在 WPF 应用程序上使用它,那么使用 ObservableCollection。
【讨论】: