Возбуждение событий изменения элемента

b в нем определено единственное

Есть еще один интерфейс, реализованный в классе BindingList<T>, Который вы, возможно, захотите переопределить в своих классах специальных коллекций для развитых сценариев: интерфейс IRaiseitemChangedEvents. В нем определено единственное булево свойство RaisesItemChangedEvents. В реализации класса BindingList<T> Это свойство возвращает False, Но вы можете при желании переопределить его в производном классе. Если вы возвращаете True, Показывая, что вы возбуждаете события изменения элемента, ожидается, что при изменении элементов в вашей коллекции вы будете возбуждать событие ListChanged. Если элементы вашей коллекции реализуют интерфейс INotifyPropertyChanged, Как было описано выше, это будет происходить автоматически. Но вы можете все равно поддерживать события изменения элемента, даже если объекты вашей коллекции и не поддерживают INotifyProperetyChanged. Однако к реализации IRaiseitemChangedEvents Следует подходить с осторожностью: для больших коллекций она может значительно ухудшить производительность, так как вы должны рефлектировать каждый объект при добавлении его в вашу коллекцию. В результате вызова AddValueChanged Метод, на который указывает делегат, будет вызываться всякий раз, когда значение свойства объекта изменяется посредством вызова метода SetValue Дескриптора свойства, а именно так привязанные к данным элементы управления редактируют источник данных. Все это будет совершенно бесполезно, если какой-то код получит ссылку на объект и будет устанавливать свойство через его установщик в определении свойства. Однако возвратный вызов будет активировать целевой метод всякий раз, когда свойство изменяется через привязанный элемент управления, поскольку именно через дескриптор привязанные элементы управления устанавливают свойства, не имея информации времени компиляции об объектах, к которым они привязаны. Следующий код показывает дополнительные методы, введенные в Binding — Listview<T> для поддержки уведомлений об изменении элемента. Класс BindingList<T> Уже реализует IRaiseitemChangedEvents, Но возвращает False, Указывая на отсутствие поддержки. Чтобы показать, что вы добавили поддержку, вам нужно реализовать интерфейс заново и возвратить True

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

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