Использование DataBinding и DataTemplate при помощи Expression Blend в Silverlight - Написание шаблона ListItemTemplate вручную
ОГЛАВЛЕНИЕ
Написание шаблона ListItemTemplate вручную
Написать шаблон для элементов списка не так сложно. Для этого откройте проект Visual Studio и найдите ListBox в Page.xaml, где вы заметите, что он также имеет закрывающий тег.
<ListBox x:Name="BookListBox"
Margin="50,25,50,25"
Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding Mode=OneWay, Path=Books,
Source={StaticResource LibraryDS}}">
</ListBox>
Между открывающим и закрывающим тегом мы расположим ListBox.ItemTemplate, а в его пределах DataTemplate.
<ListBox x:Name="BookListBox"
Margin="50,25,50,25"
Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding Mode=OneWay, Path=Books,
Source={StaticResource LibraryDS}}">
<ListBox.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Теперь нам остается всего лишь заполнить DataTemplate элементами управления, которые вы хотите использовать для того, чтобы привязать к свойствам каждой книги. Обычно начинают с какого-либо элемента управления внешним видом. Я решил использовать StackPanel и 5 текстовых полей для простоты: первое, третье и пятое я буду использовать для того, чтобы привязать к свойствам каждой книги, а оставшиеся два -- в качестве подсказок.
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="DisplayListData"
Orientation="Horizontal"
VerticalAlignment="Bottom"
Margin="5" >
<TextBlock x:Name="Title"
Text="{Binding Title}"
Margin="5,0,0,0"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
FontFamily="Comic Sans MS"
FontSize="18" />
<TextBlock x:Name="ISBNPrompt"
Text="(ISBN: "
Margin="10,0,0,0"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
FontFamily="Verdana"
FontSize="14" />
<TextBlock x:Name="ISBN"
Text="{Binding ISBN10}"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
FontFamily="Verdana"
FontSize="14" />
<TextBlock x:Name="CoverPrompt"
Text=") Cover Price: $"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
FontFamily="Verdana"
FontSize="14" />
<TextBlock x:Name="Cover"
Text="{Binding CoverPrice}"
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
FontFamily="Verdana"
FontSize="14" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
В шаблоне присутствует очень простой StackPanel, а в его пределах - пять простых TextBlock. У первого размер шрифта равен 16 и сам шрифт типа Comic Sans MS, а все остальные имеют шрифт Verdana 14-го размера. Первый, третий и пятый элементы привязаны к свойствам Title, ISBN10 и CoverPrice соответственно. При запуске ListBox будет выглядеть следующим образом
Рисунок 7-19. Запущенное приложение, обладающее ListItemTemplate