Поделиться через


Получение уведомления об изменении данных, связанных с элементом управления, в Windows Forms

Одной из наиболее важных концепций в привязке данных Windows Forms является уведомление об изменениях. Чтобы источник данных и привязанные элементы управления всегда располагали самыми актуальными данными, необходимо добавить уведомление об изменениях для привязки данных. В частности, необходимо убедиться, что привязанные элементы управления получают уведомления об изменениях, внесенных в их источник данных, а источник данных получает уведомления об изменениях, внесенных в привязанные свойства элемента управления.

В зависимости от типа привязки данных существуют разные виды уведомлений об изменениях:

  • Простая привязка, в которой одно свойство элемента управления привязывается к одному экземпляру объекта.

  • Привязка на основе списка, которая может включать в себя одно свойство элемента управления, привязанное к свойству элемента списка, или свойство элемента управления, привязанное к списку объектов.

Кроме того, при создании элементов управления Windows Forms, которые вы хотите использовать для привязки данных, необходимо применить шаблон имя_свойстваChanged к элементам управления, чтобы изменения привязанного свойства элемента управления распространялись в источник данных.

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

Для простой привязки бизнес-объекты должны предоставлять уведомление об изменениях при изменении значения привязанного свойства. Это можно сделать, предоставив событие имя_свойстваChanged для каждого свойства бизнес-объекта и привязав бизнес-объект к элементам управления с помощью BindingSource или предпочтительного метода, в котором бизнес-объект реализует интерфейс INotifyPropertyChanged и вызывает событие PropertyChanged при изменении значения свойства. Дополнительные сведения см. в разделе Практическое руководство. Реализация интерфейса INotifyPropertyChanged. При использовании объектов, реализующих интерфейс INotifyPropertyChanged, использовать BindingSource для привязки объекта к элементу управления не требуется, однако использование BindingSource рекомендовано.

Уведомление об изменениях для привязки на основе списка

Windows Forms зависит от привязанного списка с точки зрения предоставления сведений об изменении свойства (изменяется значение свойства элемента списка) и изменении списка (удаляется или добавляется элемент в списке) привязанным элементам управления. Таким образом, списки, используемые для привязки данных, должны реализовывать IBindingList, который предоставляет оба типа уведомлений об изменениях. BindingList<T> — это универсальная реализация IBindingList, предназначенная для использования с привязкой данных Windows Forms. Вы можете создать BindingList<T>, который содержит тип бизнес-объекта, реализующий INotifyPropertyChanged, и список будет автоматически преобразовывать события PropertyChanged в события ListChanged. Если привязанный список не является IBindingList, необходимо привязать список объектов к элементам управления Windows Forms с помощью компонента BindingSource. Компонент BindingSource обеспечит преобразование свойств в список, аналогичное преобразованию BindingList<T>. Дополнительные сведения см. в разделе Практическое руководство. Получение уведомления об изменении данных с использованием компонента BindingSource и интерфейса INotifyPropertyChanged.

Уведомление об изменениях для пользовательских элементов управления

Наконец, на стороне элемента управления необходимо предоставить событие имя_свойстваChanged для каждого свойства, предназначенного для привязки к данным. Затем изменения, внесенные в свойство элемента управления, распространяются в привязанный источник данных. Дополнительные сведения см. в разделе Практическое руководство. Применение шаблона PropertyNameChanged.

См. также