Если нужно, чтобы анимация повторялась несколько раз (или никогда не прекращалась), тогда можно воспользоваться свойством RepeatBehavior
Animation. Передавая конструктору простое числовое значение, можно указать жестко закодированное количество повторений. С другой стороны, если передать конструктору объект TimeSpan, то можно задать время, в течение которого анимация должна повторяться. Наконец, чтобы выполнять анимацию бесконечно, свойство RepeatBehavior можно установить в RepeatBehavior.Forever. Взгляните на следующие способы изменения поведения повтора одного из двух объектов DoubleAnimation, применяемых в примере:// Повторять бесконечно.
dblAnim.RepeatBehavior=RepeatBehavior.Forever;
// Повторять три раза.
dblAnim.RepeatBehavior=new RepeatBehavior(3);
// Повторять в течение 30 секунд.
dblAnim.RepeatBehavior=new RepeatBehavior(TimeSpan.FromSeconds(30));
Итак, исследование приемов добавления анимации к аспектам какого-то объекта с использованием кода C# и API-интерфейса анимации WPF завершено. Теперь посмотрим, как делать то же самое с помощью разметки XAML.
Реализация анимации в разметке XAML
Реализация анимации в разметке подобна ее реализации в коде, по крайней мере, для простых анимационных последовательностей. Когда необходимо создать более сложную анимацию, которая включает изменение значений множества свойств одновременно, объем разметки может заметно увеличиться. Даже в случае применения какого-то инструмента для генерирования анимации, основанной на разметке XAML, важно знать основы представления анимации в XAML, поскольку тогда облегчается задача модификации и настройки сгенерированного инструментом содержимого.
На заметку!
В подкаталогеXamlAnimations внутри Chapter_27 есть несколько файлов XAML. Скопируйте их содержимое в редактор Kaxaml, чтобы просмотреть результаты.Большей частью создание анимации подобно всему тому, что вы уже видели: по-прежнему производится конфигурирование объекта Animation
BeginAnimation() используется Давайте рассмотрим полный пример анимации, определенной в терминах XAML, и подробно ее проанализируем. Приведенное далее определение XAML будет отображать окно, содержащее единственную метку. После того как объект Label
GrowLabelFont.xaml, так что его содержимое необходимо скопировать в редактор Kaxaml, нажать клавишу <F5> и понаблюдать за поведением. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200" Width="600" WindowStartupLocation="CenterScreen"
Title="Growing Label Font!">
RepeatBehavior="Forever"/>
А теперь подробно разберем пример.
Роль раскадровок
При продвижении от самого глубоко вложенного элемента наружу первым встречается элемент
From, То, Duration и RepeatBehavior): RepeatBehavior="Forever"/>
Как упоминалось ранее, элементы Animation
Storyboard, применяемого для отображения объекта анимации на заданное свойство родительского типа через свойство TargetProperty, которым в данном случае является FontSize. Элемент Storyboard всегда находится внутри родительского элемента по имени BeginStoryboard:
RepeatBehavior="Forever"/>
Роль триггеров событий