Custom ObservableCollection - PullRequest
       12

Custom ObservableCollection

0 голосов
/ 04 июня 2010

У меня есть вопрос о классе, который я создал, который похож на 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 требуется индекс для флагов NotifyCollectionChangedAction.Add / Remove, которых LinkedList обычно не имеет.

Мой ListView, который использует коллекцию, использует привязку данных в свойстве ItemSource для доступа к коллекции.

Если вам нужно больше кода, сообщите мне.

1 Ответ

0 голосов
/ 04 июня 2010

Хорошо, я решил проблему после еще большего шага через отладку и поиск. Оказалось, что Notify работает, но у меня была небольшая ошибка в другом разделе моего кода, которая приводила к его поломке. Спасибо всем!

...