Уведомление потребителей об изменениях в коллекции

чтобы об этом сообщить коллекция

Если коллекция поддерживает изменения, она также должна поддерживать запуск события ListChanged При изменении коллекции. Чтобы об этом сообщить, коллекция должна возвращать True В свойстве Sup — PortsChangeNotification. Сама коллекция должна возбуждать события ListChanged, Когда элементы добавляются или удаляются из коллекции. В идеале она должна была бы посылать уведомления ListChanged При изменении существующих элементов в коллекции из-за модификации их свойств. Однако способность коллекции делать это будет диктоваться тем, как изменяются свойства и какую поддержку предусматривают для этого содержащиеся объектные типы. Как уже упоминалось, если изменения производятся посредством метода SetValue Дескриптора свойства, контейнер может вызвать метод AddVa — LueChanged Дескриптора и передать возвратно-вызываемый делегат, чтобы контейнер получал уведомления при изменении свойства. В ответ на уведомление от дескриптора об изменении свойства он может затем возбудить событие ListChanged. Это в точности то, что должна делать реализация интерфейса IRaiseltemChangedEvents, Обсуждаемого в одном из последующих разделов. Однако если свойство было изменено непосредственно его установщиком, вызванным через ссылку на объект, у коллекции нет способа узнать об изменении, если только сам объект не уведомит коллекцию. Последняя возможность обеспечивается интерфейсом INotifyProper — TyChanged. Другой формой изменения, которую может поддерживать коллекция, является динамическое изменение схемы, когда к элементам коллекции во время исполнения или проектирования добавляются новые свойства. Событие ListChanged Через свои аргументы события поддерживает уведомления и о таких изменениях. Событие ListChanged имеет тип ListChangedEventHandler, который сопровождается аргументом события типа ListChangedEventArgs. Его свойства, перечисленные в таблице 7.11, сообщают более подробную информацию об изменениях в списке. Запуск программы дает следующий результат: Из вывода программы вы можете видеть, что удаление элементов передает индекс удаленного элемента в свойстве Newlndex Аргументов события; для нового столбца возвращается дескриптор свойства, описывающий этот столбец; а когда изменяется элемент коллекции, наряду с его индексом возвращается дескриптор свойства, описывающий изменившееся свойство.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *