Интерфейс INotifyPropertyChanged: опубликование уведомлений об изменении элемента

тем самым содержащая объект коллекция

Интерфейс INotifyPropertyChanged Позволяет объекту уведомлять свой контейнер о всяком изменении своего свойства. Тем самым содержащая объект коллекция получает возможность возбудить событие ListChanged, Когда изменяется значение одного или нескольких свойств элемента в коллекции. Класс BindingList<T> Использует этот интерфейс, чтобы передавать наверх события ListChanged, Когда объекты его содержимого редактируются либо программно, либо через привязанные элементы управления. Тем самым осуществляется единообразная синхронизация значений объекта, привязанных к нескольким элементам управления. Интерфейс IBindingList Определяет событие ListChanged, Которое предназначено для уведомления клиента коллекции о том, что в списке что-то изменилось. Одним из видов изменения, которые должны поддерживаться, является модификация элементов данных, содержащихся в коллекции. Однако для этого нужен какой-то способ, чтобы уведомлять сам список об изменении элемента в коллекции. Элемент управления может индексировать коллекцию и получить прямую ссылку на объект. Он может различным образом использовать объект и хранить ссылку на него в течение долгого времени. Другие элементы управления, также привязанные к этому объекту, захотят узнавать об изменениях объекта, чтобы в ответ на изменение обновлять свое отображение. Интерфейс INotifyPropertyChanged Предлагает объектам контракт для уведомления своих контейнеров о том, что они изменяются, чтобы контейнер мог передать эту информацию наверх любым привязанным элементам управления. Это очень простой интерфейс. Он определяет единственный элемент-со — бытие PropertyChanged Типа PropertyChangedEventHandler. В сигнатуру события входят обычный Object В качестве первого параметра для отправителя и второй параметр типа PropertyChangedEventArgs. Последний тоже прост: он сообщает имя изменившегося свойства. Получив уведомление о том, что некоторое свойство изменилось, ваш потребляющий код может обновить все, что зависит от этого свойства. Основным потребителем этого интерфейса является класс BindingList<T>, Который использует его для возбуждения событий ListChanged В любых привязанных элементах управления или в компоненте BindingSource, Когда происходит модификация свойств элементов коллекции. Вы увидите в действии этот интерфейс также в примерах главы 9.