Главная » Silverlight » Определение анимаций состояний

0

Анимации состояний — наиболее интересный компонент шаблона. Они обеспечива­ют реализацию эффекта переворачивания. Кроме того, именно они, скорее всего, будут изменяться, если разработчик решит добавить пользовательский шаблон для объекта

FlipPanel.

•       В шаблоне, используемом по умолчанию, анимации применяют трехмерное про­ецирование для вращения областей содержимого. Для сокрытия области содер­жимого она поворачивается на 90°После инициализации элемента управления в конце метода OnApplyTemplate ().

•       При реагировании на событие изменения состояния, например при перемеще­нии указателя или щелчке на кнопке ToggleButton.

•       При реагировании на изменение свойства или в методе, запускаемом посред­ством кода. Например, процедура установки свойства IsFlipped вызывает метод ChangeVisualState () и передает ему значение true, в результате чего выполня­ется переход анимации. Если нужно позволить потребителю элемента выбрать, следует ли запустить анимацию, необходимо добавить метод Flip (), который принимает тот же булев параметр и передает его методу ChangeVisualState ().

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

Использование панели FlipPanel

Созданный в предыдущих разделах шаблон элемента управления FlipPanel мож­но использовать в реальных приложениях. Для этого нужно добавить ссылку на сбор­ку, в которой он определен, и отобразить в разметке префикс пространства имен, со­держащего элемент.

<UserControl х:Class="FlipPanelTest.Page" xmlns: lib="clr-namespace: FlipPanelControl; *!>

assembly=FlipPanelControl" . .. >

Кроме того, нужно добавить экземпляр FlipPanel на страницу. Приведенная ниже разметка создает объект FlipPanel, показанный на рис. 13.8. В разметке использует­ся панель StackPanel, заполненная элементами переднего содержимого, и панель Grid, заполненная элементами обратного содержимого.

<lib:FlipPanel x:Name="panel" BorderBrush="DarkOrange" BorderThickness="3" CornerRadius="4" Margin="10"> <lib:FlipPanel.FrontContent> <StackPanel Margin="6">

CTextBlock TextWrapping="Wrap" Margin="3"

4 FontSize="16" Foreground="DarkOrange">

Передняя сторона FlipPanel</TextBlock>

<Button Margin="3" Padding="3" Content="KHonKa 1"> </Button>

<Button Margin="3" Padding="3" Content="KHonKa 2"> </Button>

<Button Margin="3" Padding="3" Content="Кнопка 3"> </Button>

<Button Margin="3" Padding="3" Content="KHonKa 4"> </Button>

</StackPanel> </lib:FlipPanel.FrontContent>

<lib:FlipPanel.BackContent>

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

<TextBlock TextWrapping="Wrap" Margin="3"

Fonts і ze="16" Foreground="DarkMagenta"> Обратная сторона FlipPanel</TextBlock> <Button Grid.Row="2" Margin="3" Padding="10" Content="BepHyTbCH" HorizontalAlignment="Center" VerticalAlignment="Center" Click="cmdFlip_Click"x/Button>

</Grid>

</lib:FlipPanel.BackContent>

</lib:FlipPanel>

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

private void cmdFlip_Click(object sender, RoutedEventArgs e)

{

panel.IsFlipped = !panel.IsFlipped;

}

Результат тот же, что и при щелчке на кнопке ToggleButton, на которой нарисова­на стрелка. Кнопка ToggleButton определена в шаблоне, применяемом по умолчанию.

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

По теме:

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