0

我有一个关于我创建的类似于 ObserverableCollection 的类的问题。我的类基本上具有与它相同的功能,但是当将项目添加到列表中时,我向它添加了一些自动排序功能。我的问题是我的类实现了接口 INotifyCollectionChanged 以便在集合更改时通知显示我的集合的 ListView(至少这是我认为的)。每次我从集合中添加或删除时,我都会通知集合已更改,但 ListView 不显示更改。那么我是否错过了解释 INotifyCollectionChanged 所做的事情?我应该改用 INotifyPropertyChanged 吗?对这个问题的任何帮助都会很棒!

以下是我课堂上的重要部分:

public class AscendingObservableCollection<T> : ICollection<T>, IEnumerable<T>, INotifyCollectionChanged
{

public event NotifyCollectionChangedEventHandler CollectionChanged;
...
protected void OnCollectionChanged()
    {
        CollectionChanged.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
    }
}

每当集合更改(项目添加/删除)时,我都会调用 OnCollectionChanged()。我使用 NotifyCollectionChangedAction.Reset 进行所有更改,因为我的集合是 LinkedList 并且 NotifyCollectionChangedEventArgs 构造函数需要一个 LinkedList 通常没有的 NotifyCollectionChangedAction.Add/Remove 标志的索引。

使用集合的我的 ListView 使用 ItemSource 属性上的数据绑定来访问集合。

如果您需要更多代码,请告诉我。

4

1 回答 1

0

好的,经过更多的调试和搜索步骤,我解决了这个问题。事实证明,通知的东西正在工作,但我的代码的另一部分有一个小错误,导致它崩溃。谢谢每一位!

于 2010-06-04T16:34:13.150 回答