Привязка данных (Data Binding) в Silverlight - Пошаговая логика привязки данных

ОГЛАВЛЕНИЕ

Пошаговая логика привязки данных

  1. Создайте объект приемника (т.е., TextBlock) и определите свойство (Property), которое будет связано (Bound)
  2. Определите что будет источником и свойством в данном источнике, чье значение будет привязано к приемнику
  3. Преобразуйте свойство приемника (Target) к свойству источника (Source) используя DataContext

Это очень легко выполнить, особенно во второй раз.

Нам необходимо сделать так, чтобы наше приложение Silverlight могло отображать детали любой книги, которую могут выбрать, тем самым нам не нужно явно задавать значения. Привязка данных позволяет настроить свойства книги и затем выбрать необходимую книгу во время выполнения.

Для того чтобы продемонстрировать это мы добавим новую кнопку, Change, которая будет осуществлять переход между двумя книгами

<Button x:Name="Change"
Content="Change Book" 
Height="30" Width="80"
HorizontalAlignment="Right"
Grid.Row="5" Grid.Column="0" /> 

Как вы уже могли убедиться, нет ничего сложного в данной кнопке; вся "магия" заключается в коде, и мы совершим это простыми шажками . Сначала, "вытащите" ссылку на книгу в переменную экземпляра, во-вторых, создайте три новых переменных экземпляр

private Book b1;     
private Book b2;
private Book currentBook; 

Вы проинициализируете две книги в памяти, и к первой будете ссылаться при помощи определителя b1, а ко второй - при помощи b2, и currentBook будет переключаться между ними. Признаюсь, что это уловка, но все же это будет работать, при этом код будет очень простым.

Целью является то, что нам необходимо сымитировать "реальную" систему, где вы будете выбирать не между двумя книгами, а между множеством,

 

Рис. 2-4. Получение одной книги из библиотеки

Вам понадобится инициализировать каждую книгу при запуске программы и затем перемещаться по ним.

b1 = new Book();
InitializeBleak(b1);
currentBook = b2 = new Book()
InitializeProgramming(b2); 

Инициализация устанавливает свойства книги.

private void InitializeProgramming(Book b)
 {
   b.Title = "Programming Silverlight";
   b.Author = "Jesse Liberty, Tim Heuer";
   b.MultipleAuthor = true;
   b.QuantityOnHand = 20;
   b.Chapters = new List<string>()
     { "Introduction", "Controls", "Events", "Styles" };
 }
 
 private void InitializeBleak(Book b)
 {
   b.Title = "Bleak House";
   b.Author = "Charles Dickens";
   b.MultipleAuthor = false;
   b.QuantityOnHand = 150;
   b.Chapters = new List<string>()
   {
     "In Chancery",
     "In Fashion",
     "A Progress",
     "Telescoopic Philanthropy",
     "A Morning Adventure",
     "Quite at Home",
     "The Ghosts Walk",
     "Covering Sins",
     "Signs and Tokens",
     "The Law Writer"
   };
 }