【问题标题】:Get notified of collection changes收到有关集合更改的通知
【发布时间】:2013-04-14 16:01:33
【问题描述】:

我的班级有一个公共列表字段。我想检测何时有人更改此集合。但是,围绕这个集合编写我自己的 Add/Remove 包装器似乎很浪费。有没有办法通过代表或类似的方式获取有关集合更改的通知?

【问题讨论】:

    标签: c# collections delegates notifications


    【解决方案1】:

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

    【讨论】:

    • 看来这正是我想要的。谢谢!
    【解决方案2】:

    您所描述的集合已经存在,名为ObservableCollection

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

    【讨论】:

      【解决方案3】:

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

      正如answer 中提到的,BindingList 提供的功能远远超过 ObservableCollection

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        • 2014-06-21
        相关资源
        最近更新 更多