Привязка данных (Data Binding) в Silverlight

ОГЛАВЛЕНИЕ

Привязка данных (Data binding) является соединением между пользовательским интерфейсом (User Interface) и бизнес-объектом либо другим провайдером данных. Объект пользовательского интерфейса называется приемником (target), провайдер данных называется источником (source).

Привязка данных помогает в разделении уровня пользовательского интерфейса вашего приложения от других уровней вашего приложения (бизнес-объектов, информации и т.д.). Разделение ответственности усиливается уменьшением связанности между приемником пользовательского интерфейса и его источником посредством использования объекта привязки (Binding).

Объект привязки может быть воспринят как черный ящик с универсальными коннекторами: на одной стороне - для приемника, и на другой стороне - для источника. Сверху расположены переключатели, где самым важным является переключатель режима привязки данных (Data Binding Mode), который определяет способ передачи данных.

 

Рис. 2-1. Объект привязки (Binding) в качестве универсального коннектора между приемником и источником 

Режимы привязки данных

Режим (Mode) , который имеет тип BindingMode, является перечислением, обладающим тремя возможными значениями, как это показано ниже,

 

Рис. 2-2. Вырезка из документации о BindingMode

OneTime (одноразовая) привязка устанавливает приемник и после этого привязка завершается. Это отлично подходит для отображения информации, которая изменяется очень редко, либо вообще никогда.

OneWay (односторонняя) привязка устанавливает приемник и обновляет его по ходу изменения источника. Это отлично подходит для отображения информации, которую пользователю не разрешено изменять.

TwoWay (двусторонняя) привязка устанавливает приемник и обновляет его по мере изменения источника, а также изменяет источник, в том случае если пользовательизменит приемник либо что-то другое в приложении, что может вызвать изменение источника.

Если вы создаете интернет-магазин по продаже книг и отображаете информацию о книге, то вы можете использовать одноразовую привязку данных об авторе (Author) и для заголовка (Title), как только вы получите данную информацию (эта информация ведь не будет изменяться впоследствии ), и одностороннюю привязку для цены на книгу ( ведь кто-то может понизить цену за день) , а также вам, скорее всего, понадобится двусторонняя привязка данных для количества книг на складе.

Приемником вашей привязки может быть любое общедоступное свойство (public) виртуального или CLR-объекта.

Вы можете проверить это на небольшом примере; но даже в этом примере мы будем придерживаться трехуровневого подхода, при этом соблюдая строгое разделение между

  • Уровнем пользовательского интерфейса (User Interface Layer)
  • Бизнес-уровнем (Business Layer)
  • Уровнем сохраняемости (Persistence Layer).

Уровень пользовательского интерфейса будет состоять из элементов управления, которыми мы завладеем из инструментария и будем использовать такими, какие они есть. Тем не менее следующая статья расскажет о способе изменения их внешнего вида при помощи стилей и шаблонов. Бизнес-уровень будет представлен классом Book. Мы опустим пока уровень сохраняемости.