Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
course_(Windows&Web).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.68 Mб
Скачать

Использование связывания в стилях

Теперь в стилях также можно применять связывание. Это упрощает «натягивание» уникальной оболочки для каждого пользователя, позволяя загружать стили динамически, а также предусматривать установку и модификацию характеристик интерфейса.

1: <Grid.Resources > 2: <Style TargetType="TextBox"> 3: <Setter Property="Background" Value="{Binding background}"/> 4: <Setter Property="Width" Value="{Binding width}"></Setter> 5: <Setter Property="Margin" Value="{Binding margin}"></Setter> 6: </Style> 7: <Style TargetType="TextBlock"> 8: <Setter Property="Margin" Value="{Binding margin}"></Setter> 9: </Style> 10: </Grid.Resources>

Класс модели

1: public class TextStyle 2: { 3: public string width { get; set; } 4: public string background { get; set; } 5: public string margin { get; set; } 6: }

И связывание:

1: LayoutRoot.DataContext = new TextStyle() 2: { width = "200", background = "Blue", margin = "5" };

Неявные шаблоны

Шаблоны данных позволяют указать формат/разметку отображения не интерфейсных данных и использовать эту разметку в различных местах нашего приложения.

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

Создадим проект и добавим несколько типов данных

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]