c# - 在 C# 中包装 ObservableCollection<T>

标签 c# observablecollection containment

I have reason包装 ObservableCollection<T> 的实例另一种类型。

我正在实现 ICollection<T>在我的新类型中。这很简单。我也在实现 INotifyCollectionChanged , 这意味着实现

public event NotifyCollectionChangedEventHandler CollectionChanged;

我能想到的最好的实现方式是在我的 ICollection<T> 实现中添加额外的代码。 ,像这样:

public void Add(T item)
{
    Collection.Add(item);
    if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}

(集合是我包装的 ObservableCollection<T> 的实例)。

有没有办法利用 INotifyCollectionChanged 的实现? Collection 提供的,而不是我自己重新实现的?

最佳答案

是的。当您为 Collection 属性或字段赋值时,处理它的 CollectionChanged 事件:

Collection = new ObservableCollection<T>();
Collection.CollectionChanged += this.HandleCollectionChanged;

然后在 HandleCollectionChanged 方法中,引发对象自己的 CollectionChanged 事件。

关于c# - 在 C# 中包装 ObservableCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350239/

相关文章:

java - 如何检查一个ArrayList的元素是否都包含在另一个ArrayList中

javascript - JQuery-UI 遏制 : 'parent' does not work

c# - .NET 标准 2.0 的 WCF Web 服务引用

c# - 编译 WPF 应用程序语言文件夹时复制到构建文件夹

c# - 使用安全枚举在 C# 4.0 中线程安全地替换 ObservableCollection<T>

c# - 无法解析符号 T

c# - ListView不会删除Xamarin.Forms中的项目。我已将ObservableCollection分配给ListView itemsource。 MVVM

java - 当使用 ArrayList(Collection<? extends E> c) 作为复制构造函数时,我收到两个错误

c# - 用ID修改节点值C#

javascript - 如何将包含 HTML 的字符串传递给 onClick 事件?