Использование DataBinding и DataTemplate при помощи Expression Blend в Silverlight - Привязка бизнес-объекта к элементу управления Listbox

ОГЛАВЛЕНИЕ

Привязка бизнес-объекта к элементу управления Listbox

Сохраните все изменения и вернитесь к проекту в Blend, где вы будете предупреждены об изменениях в проекте (ведь он изменился), как это показано на рисунке 7-12. Ответьте положительно о том, что вы хотите его перезагрузить (нажав на кнопку "yes").

Рисунок 7-12. Перезагрузка Blend

Оказывается привязка набора Books к ListBox является простейшей процедурой и вот как она реализовывается. Найдите кнопку "+Clr Object" в закладке Data (обычно она расположена под панелями Project/Properties/Resources). Щелкните по ней.

Рисунок 7-13. Щелчок по CLR Object в закладке Data

Это откроет окошко добавления источника данных для Add CLR объекта ("Add CLR Object Data Source"), которое отобразит все потенциальные объекты источников данных в вашем проекте. Отсюда вы можете выбрать Library в качестве источника данных, как это показано на рисунке 7-14

Рисунок 7-14. Привязка класса Library в качестве источника данных

Как только был выбран Library, результат будет отображен в окошке Data, и щелкнув по стрелочке рядом с Library вы увидите свойства, включающие в себя свойство Books, как это показано на рисунке 7-14. Перетащите объект Books в Listbox!

Рисунок 7-15. Объект Books в окошке Data

Когда вы отпустите объект вас спросят о привязке набора Books к элементу ListBox, как это показано на рисунке 7-16 

Рисунок 7-16. Привязка набора Books к ListBox

Как только вы решите привязать набор Books к ListBox, вас спросят о поле, по которому необходимо осуществить привязку. В случае с ListBox по умолчанию будет предложено привязать список источника к ItemsSource, как это показано на рисунке 7-17

Рисунок 7-17. Создание привязки данных

Как только вы примете ItemsSource, табличная сетка будет заполнена записями о книгах, хотя и не совсем так, как вы это себе представляли. Запустите приложение, и вы увидите привязанные данные, но на этом мы не закончили. 

Рисунок 7-18. Отображение книг

Проблема, которая присутствует на рисунке 7-17, это то, что вы привязываете к очень сложному объекту (a Book), который имеет много свойств. Пока что ему совсем неизвестно то, что вы собираетесь отображать, поэтому он отображает тип объекта. Все, что вам необходимо представить, так это шаблон для каждой строки, и затем оно осуществит проход по всему набору, применяя ваш шаблон к каждому элементу. Вы можете написать шаблон вручную либо в Blend.