Привязка данных (Data Binding) в Silverlight - Привязка к элементу TextBlock

ОГЛАВЛЕНИЕ

Привязка к элементу TextBlock

Давайте начнем с простого и привяжем два первых блока с текстом. Основа заключается в том, что необходимо сообщить текстовому блоку о том, что вы привязываете и что даете название свойству. Вы также сообщаете Binding о режиме, который будете использовать (односторонний, двусторонний или одноразовый). По умолчанию установлен режим в одну сторону, но хорошим тоном программирования будет явная установка данного свойства. Данная привязка выполняется в текстовом поле и обрамлена фигурными скобками,

Text="{Binding Title, Mode=OneWay }"

Тем самым, первые две строки выглядят так

<TextBlock x:Name="TitlePrompt" Text="Title: "
   VerticalAlignment="Bottom"
   HorizontalAlignment="Right"
   Grid.Row="0" Grid.Column="0" />
  
<TextBlock x:Name="Title"
   Text="{Binding Title, Mode=OneWay }"
   VerticalAlignment="Bottom"
   HorizontalAlignment="Left"
   Grid.Row="0" Grid.Column="1" />
  
  <TextBlock x:Name="AuthorPrompt" Text="Author: "
   VerticalAlignment="Bottom"
   HorizontalAlignment="Right"
   Grid.Row="1" Grid.Column="0" />
  
<TextBlock x:Name="Author"
   Text="{Binding Author, Mode=OneWay }"
   VerticalAlignment="Bottom"
   HorizontalAlignment="Left"
   Grid.Row="1" Grid.Column="1" /> 

Пока что мы не знаем к свойствам Title и Author которого элемента мы осуществляем привязку, но тем не менее, мы подразумеваем наличие объекта с данными свойствами.

Тоже самое выполняется для всех других элементов управления. Для ListBox привязывается ItemSource, но в данном случае оно ожидает привязку к коллекции (collection ; в частности, к IEnumerable).

<ListBox x:Name="Chapters"
   ItemsSource="{Binding Chapters, Mode=OneWay}"
   VerticalAlignment="Bottom"
   HorizontalAlignment="Left"
   Height="60" Width="200"
   Grid.Row="2" Grid.Column="1" />

Checkbox подразумевает привязку к объекту, который будет иметь тип Boolean.

<CheckBox x:Name="MultipleAuthor" IsChecked="{Binding MultipleAuthor, Mode=TwoWay}"
   VerticalAlignment="Bottom"
   HorizontalAlignment="Left"
   Grid.Row="3" Grid.Column="1"/>