Привязка данных (Data Binding) в Silverlight
ОГЛАВЛЕНИЕ
Привязка данных помогает в разделении уровня пользовательского интерфейса вашего приложения от других уровней вашего приложения (бизнес-объектов, информации и т.д.). Разделение ответственности усиливается уменьшением связанности между приемником пользовательского интерфейса и его источником посредством использования объекта привязки (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. Мы опустим пока уровень сохраняемости.