自定义ObservableCollection

时间:2010-06-04 15:08:39

标签: c# wpf collections inotifycollectionchanged

我有一个关于我创建的类与ObserverableCollection类似的问题。我的类基本上具有与它相同的功能,但是当项添加到List时,我添加了一些自动排序功能。我的问题是我的类实现了接口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标志的索引。

使用该集合的My ListView使用ItemSource属性上的Databinding来访问集合。

如果您需要更多代码,请与我们联系。

1 个答案:

答案 0 :(得分:0)

好的,经过调试和搜索后,我解决了这个问题。事实证明Notify的东西正在运行,但是我的代码的另一部分中有一个小错误导致它破坏。谢谢大家!