Привязка данных
41Expression Blend --- Графические интерфейсы --- Привязка данных
Элементы графического пользовательского интерфейса нередко оказываются целью различных операций привязки данных. Проще говоря, привязка данных — это действие связывания свойства элемента управления со значениями данных. Совершая это действие, можно значительно упростить задачу написания кода, поскольку текущее состояние привязываемых свойств будет автоматически отображаться в пользовательском интерфейсе. Ниже приведены характерные примеры привязки данных:
Привязка значения свойства логического класса к элементу управления типа CheckBox.
Заполнение объекта типа DataGrid данными из специальной коллекции.
Заполнение элемента управления типа ListBox значениями из XML-документа.
Для правильной реализации привязки данных необходимо ясно представлять себе отличие источника операции привязки от ее адресата, или цели. Как и следовало ожидать, в качестве источника операции привязки данных служит место, откуда поступают данные (свойство объекта, узел разметки XML и т.д.), а в качестве адресата (или цели) — свойство элемента пользовательского интерфейса (типа CheckBox, TextBox и т.д.), получающего из источника данные и использующего их.
Для прояснения этого важного отличия приведенные выше примеры привязки данных можно уточнить следующим образом:
Исходное логическое значение может быть привязано к целевому свойству элемента управления типа CheckBox.
Целевой объект типа DataGrid может быть заполнен данными из исходной специальной коллекции.
Целевой объект типа ListBox может быть заполнен данными из исходного XML-документа, опираясь на оператор XPath.
Откровенно говоря, пользоваться имеющейся инфраструктурой привязки данных совсем не обязательно. Если бы разработчик создал собственную логику привязки данных, связывание свойств двух объектов обычно включало бы в себя обработку различных событий и написание процедурного кода для установления связи между источником и адресатом.
Так, если в главном окне типа Window имеется элемент управления типа ScrollBar, значение свойства которого требуется отображать в свойстве элемента управления типа Label, для этой цели может потребоваться обработка события ValueChanged, наступающего при изменении значения в свойстве элемента управления типа ScrollBar, а следовательно, и обновление соответствующего свойства элемента управления типа Label.
Как правило, привязка данных на платформах WPF и Silverlight позволяет устанавливать подобные связи исключительно средствами XAML. И хотя это справедливо в большинстве случаев, для реализации привязки данных иногда все же приходится писать дополнительный процедурный код.