Читайте также: |
|
Шаблоны данных позволяют указать формат/разметку отображения не интерфейсных данных и использовать эту разметку в различных местах нашего приложения.
Неявные шаблоны позволяют формировать разметку, базируясь на типе данных. В более ранних версиях технологии необходимо было указывать ключ шаблона, что бы его использовать в нескольких местах приложения. Используя неявные шаблоны, нам необходимо лишь указать, для какого типа данных необходимо использовать шаблон.
Создадим проект и добавим несколько типов данных
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public string Company { get; set; }
}
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Room { get; set; }
}
Добавим несколько шаблонов данных в ресурсы приложения(файл App.xaml)
<Application
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ImplicitDataTemplate.App"
xmlns:data="clr-namespace:ImplicitDataTemplate">
<Application.Resources>
<DataTemplate DataType="data:Customer" >
<Grid Background="LightSkyBlue">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName,
StringFormat='\{0\} '}"/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
<StackPanel Grid.Row="1">
<TextBlock Text="{Binding Title}" FontStyle="Italic"/>
<TextBlock Text="{Binding Company,
StringFormat='Компания: \{0\}'}" FontWeight="Bold"/>
</StackPanel>
Grid>
</DataTemplate>
<DataTemplate DataType="data:Employee" >
<Grid Background="LightGreen" >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
Grid.RowDefinitions>
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right">
<TextBlock Text="{Binding FirstName,
StringFormat='\{0\} '}"/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal"
HorizontalAlignment="Right">
<TextBlock Text="{Binding Room,
StringFormat='Комната: \{0\}'}" FontStyle="Italic"/>
</StackPanel>
</Grid>
</DataTemplate>
</Application.Resources>
</Application>
И последний момент, создание тестовых данных в приложении, связывание их с формой
this.DataContext = new List<object>
{
new Customer{ FirstName="Иван", LastName="Копаткинский",
Company="Топинамбур", Title="Бухгалтер"},
new Customer{ FirstName="Дмитрий", LastName="Вирутон",
Company="Пальма туриста", Title="Менеджер"},
new Employee{ FirstName="Павел", LastName="Уловинко", Room=101}
};
и добавление компонента ListBox для отображения списка данных
<Grid x:Name="LayoutRoot" Background="White">
<ListBox ItemsSource="{Binding}"/>
</Grid>
Результат работы:
Рисунок 5.7. Результат применения неявных шаблонов в Silverlight 5.
Дата добавления: 2015-08-13; просмотров: 71 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Улучшенная поддержка шаблона MVVM | | | Другие изменения |