Обтекание ObservableCollection <T>в C # - PullRequest
2 голосов
/ 02 декабря 2011

У меня есть причина , чтобы обернуть экземпляр 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));
}

(Collection - это экземпляр ObservableCollection<T>, который я обертываю).

Есть ли способ использовать реализацию INotifyCollectionChanged, которую обеспечивает Collection, вместо того, чтобы заново реализовывать ее самостоятельно

1 Ответ

5 голосов
/ 02 декабря 2011

Да.Когда вы присваиваете значение своего свойства или поля Collection, обрабатываете его событие CollectionChanged:

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

Затем в методе HandleCollectionChanged вы вызываете собственное событие CollectionChanged объекта.

...