Функционалност с Range в ObservableCollection

Класът ObservableCollection не позволява добавяне, премахване и т.н. колекции от елементи. За да добавите такава функционалност, можете да създадете наследник на този клас, в който да внедрите необходимата функционалност.

Цел:Избягвайте множество събития PropertyChanged и OnCollectionChanged при групови промени в колекция и синтаксисът е почти незначителен и няма значение.

ObservableCollection има свойство, наследено от Collection:

с които трябва да работите.

Шаблонът за уточняване е:1) Проверете за възможност за промяна: 2) Обработете елементите според вашата логика: 3) Извикайте събитието PropertyChanged за свойствата "Count" и "Item[]":

4) Извикайте събитието CollectionChanged с параметри на събитието: Нулирайте типа промяна, не предавайте параметрите OldItems и NewItems:

Недостатъци:Поради елемент 4 в манипулатора на събитие CollectionChanged, ще бъде невъзможно да се работи със OldItems и NewItems, защото те са празни. Това е необходимо поради факта, че някои WPF контроли не работят с промени в колекцията не от един елемент, а от няколко. В същото време, ако типът промяна е Reset, това означава, че е настъпила значителна промяна в колекцията и това е нормално за WPF контролите. Ако използвате новия клас не като източник на данни за WPF контролата, тогава можете да предадете други типове промени в стъпка 4, както и попълнените стойности на OldItems и NewItems, и след това да ги обработите спокойно.

Hardcore conf в C++. Каним само професионалисти.