【问题标题】:Fire an event when Collection Changed (add or remove)集合更改时触发事件(添加或删除)
【发布时间】:2009-10-22 14:16:58
【问题描述】:

我有一个包含列表的类:

public class a
{
    private List<MyType> _Children;

    public Children
    {
        get { return(_Children); }
        set { _Children = value ; }
    }
}

我想创建一个事件并在我的列表(此处为 _Children)发生更改时触发它,例如添加或从中删除项目或将其清除。

谢谢

【问题讨论】:

    标签: c# events


    【解决方案1】:

    将您的列表更改为ObservableCollection&lt;T&gt;。它实现了INotifyCollectionChanged,所以你可以订阅它上面的更改事件。

    如果您需要完整的列表语义,另一种选择是使用BindingList&lt;T&gt;

    【讨论】:

    • 关于 ObservableCollection 要记住的一点是,如果您尝试从创建它的线程以外的线程向其添加元素(无论您是否锁定它),它将引发异常。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      或者如果你想控制添加和删除方法以及引发事件,请检查Collection&lt;T&gt;

      http://msdn.microsoft.com/en-us/library/ms132397.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-29
        • 2011-12-31
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 2023-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多