Главная » Silverlight » Использование разных шаблонов

0

Правильно разработанные пользовательские элементы управления очень гибкие. Например, в рассмотренном выше объекте FlipPanel можно применить другой шаблон для изменения внешнего вида кнопки ToggleButton, изменить анимации элементов за­головка и содержимого и т.д.

Один из примеров использования объекта FlipPanel другим способом, существен­но отличающимся от рассмотренного выше, показан на рис. 13.10. Кнопки размещены на специальной панели в нижней части передней стороны и в верхней части обратной стороны. Когда панель переворачивается, ее содержимое одновременно поворачивает­ся и размывается. Обратная сторона появляется снизу.

Рис. 13.10. Использование панели FlipPanel с другим шаблоном

Ниже приведена часть шаблона, в которой определяется переднее содержимое.

<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}" Background="{TemplateBinding Background}">

<Border.RenderTransform> <ScaleTransform x:Name="FrontContentTransform"> </ScaleTransform> </Border.RenderTransform> <Border.Effect> <BlurEffeet x:Name="FrontContentEffect" Radius="0"> </BlurEffect> </Border.Effect>

<Grid> <Grid.RowDefinitions> <RowDefinitionX/RowDefinition> . <RowDefinition Height="Auto"x/RowDefinition> </Grid.RowDefinitions>

<ContentPresenter Content="{TemplateBinding FrontContent}"></ContentPresenter> <Rectangle Grid.Row="l" Stretch="Fill"

Fill="LightSteelBlue"X/Rectangle> <ToggleButton Grid.Row="l" x:Name="FlipButton"

Margin="5" Padding="15,0" Content="Л" FontWeight="Bold" FontSize="12" HorizontalAlignment="Right"x/ToggleButton> </Grid> </Border>

t ;

Обратное содержимое определяется аналогично. Шаблон содержит объект Border, в котором определен элемент ContentPresenter. В верхней правой части рамки расположена закрашенная кнопка ToggleButton. В шаблоне также определены все не­обходимые объекты SceleTransform и BlurEffect, обеспечивающие преобразование и размывание рамки. Анимация использует их для поворота панели. Ниже приведены анимации, поворачивающие панель.

<VisualStateManager.VisualStateGroups> <VisualStateGroup х:Name="ViewStates"> <VisualStateGroup.Transitions> <VisualTransition GeneratedDuration="0:0:0 .7"> </VisualTransition> </VisualStateGroup.Transitions>

<VisualState x:Name="Normal"> <Storyboard> <DoubleAnimation Storyboard.TargetName=

"BackContentTransform" Storyboard.TargetProperty="ScaleY" To="0" Duration="0:0:0"></DoubleAnimation>

<DoubleAnimation Storyboard.TargetName= "BackContentEffect" Storyboard.TargetProperty="Radius" To="40" Duration="0:0:0"></DoubleAnimation> </Storyboard>

</VisualState>

<VisualState х:Name="F1ipped"> <Storyboard> <DoubleAnimation Storyboard.TargetName=

"FrontContentTransform" Storyboard.TargetProperty="ScaleY" To="0" Duration="0:0:0"></DoubleAnimation>

<DoubleAnimation Storyboard.TargetName= "FrontContentEffeet" Storyboard.TargetProperty="Radius" To="40" Duration="0:0:0"x/DoubleAnimation> </Storyboard> </VisualState> </VisualStateGroup>

</VisualStateManager.VisualStateGroups>

Анимация, изменяющая область переднего содержимого, выполняется одновремен­но с анимацией, изменяющей область обратного содержимого, поэтому для управления ими пользовательские объекты переходов не нужны.

Резюме

В предыдущей главе было рассмотрено применение стилей для повторного исполь­зования параметров форматирования. В данной главе рассмотрены более радикальные средства изменения внешнего вида элементов управления — шаблоны. Встроенная в шаблоны модель частей и состояний используется для настройки элементов управ­ления Silverlight и создания изощренной кнопки без повторной реализации ее базовых средств. Созданные в качестве примеров пользовательские элементы управления под­держивают все средства базовых кнопок. Им можно присваивать фокус с помощью кла­виши <ТаЬ>, при щелчке на них генерируются события и т.д. Что лучше всего, шаблон кнопки можно повторно использовать в разных приложениях, настраивая параметры кнопки при каждом применении.

Что еще нужно знать об элементах управления Silverlight? Чтобы придать им эстетиче­ски привлекательный внешний вид, вы должны потратить некоторое время на углублен­ное изучение графики и анимации. С помощью фигур, кистей и объектов преобразований, с которыми вы уже знакомы, можно создавать изощренные элементы управления с впе­чатляющими эффектами: мерцанием, стеклянным свечением, пульсацией и т.д. Основной секрет состоит в объединении фигур на разных слоях, каждый со своей градиентной ки­стью. Очень поможет вам в этом изучение шаблонов элементов управления, созданных другими разработчиками. Два наиболее интересных источника, из которых можно извле­кать готовые шаблоны, — пакет Silverlight Toolkit (www. silverlight. codeplex. com) и гале­рея сообщества Expression Blend (www.gallery.expression.microsoft.com).

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии