Posted on 14. April 2011

Silverlight 5: Неявные шаблоны

Одна из новых возможностей Silverlight 5 - это использование неявных шаблонов данных. Уверен – вы уже работали с шаблонами данных при использовании элементов управления ListBox, DataGrid, ComboBox и другими. Шаблоны данных позволяют указать формат/разметку отображения не интерфейсных данных и использовать эту разметку в различных местах нашего приложения.

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

Создаем новый Silverlight 5 проект.

image

И добавляем несколько типов данных

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>

Теперь нажимаем F5 и любуемся нашим результатом работы Smile

image

Скачать пример:



Comments

trackback Сергей Лутай
2:27 AM on Thursday, April 14, 2011

Silverlight 5: Неявные шаблоны

Одна из новых возможностей Silverlight 5 - это использование неявных шаблонов данных. Уверен – вы уже

Anton Anton Russia
9:09 AM on Thursday, April 14, 2011

Но как только нужно будет сделать детальный просмотр этих данных и для них будут тоже прописаны эти шаблоны, эта фишка перестанет быть полезной.

Anton Anton Russia
9:12 AM on Thursday, April 14, 2011

Слишком много местоимений использовал в предыдущем комментарии...

Если появится детальный просмотр данных со своими шаблонами, то неявные шаблоны уже не получится использовать.

Александр Быкин Александр Быкин Russia
1:21 PM on Thursday, April 14, 2011

Волшебно.

trackback progg.ru
6:48 PM on Thursday, April 14, 2011

Silverlight 5: Неявные шаблоны

Thank you for submitting this cool story - Trackback from progg.ru

trackback Блог Владимира Юнева
11:06 AM on Friday, April 15, 2011

Что почитать на выходных? Рекомендуем, выпуск №7

Это подборка статей на тему веб-разработки на платформе .NET (и не только). За день перед выходными я

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading