Чтобы проиллюстрировать применение типа дискретного ключевого кадра, предположим, что необходимо построить элемент управления Button, который выполняет анимацию своего содержимого так, что на протяжении трех секунд появляется значение ОК! по одному символу за раз. Представленная далее разметка находится в файле StringAnimation.xaml. Ее можно скопировать в редактор Kaxaml и просмотреть результаты.

  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

  Height="100" Width="300"

  WindowStartupLocation="CenterScreen" Title="Animate String Data!">

  

   

            FontSize="16pt" FontFamily="Verdana" Width="100">

    

      

        

          

            

               Storyboard.TargetProperty="Content"

               Duration="0:0:3">

              

              

              

              

            

          

        

      

    

  

 

Первым делом обратите внимание, что для кнопки определяется триггер события, который обеспечивает запуск раскадровки при загрузке кнопки в память. Класс StringAnimationUsingKeyFrames отвечает за изменение содержимого кнопки через значение Storyboard.TargetProperty.

Внутри элемента StringAnimationUsingKeyFrames определены четыре элемента DiscreteStringKeyFrame, которые изменяют свойство Content на протяжении двух секунд (длительность, установленная объектом StringAnimationUsingKeyFrames, составляет в сумме три секунды, поэтому между финальным символом ! и следующим появлением О будет заметна небольшая пауза).

Теперь, когда вы получили некоторое представление о том, как строятся анимации в коде C# и разметке XAML, давайте выясним роль стилей WPF, которые интенсивно задействуют графику, объектные ресурсы и анимацию.

<p id="AutBody_Root1232"><strong>Роль стилей WPF</strong></p>

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

К счастью, инфраструктура WPF предлагает простой способ ограничения внешнего вида и поведения связанных элементов управления с использованием стилей. Выражаясь просто, стиль WPF — это объект, который поддерживает коллекцию пар "свойство-значение". С точки зрения программирования отдельный стиль представляется с помощью класса System.Windows.Style. Класс Style имеет свойство по имени Setters, которое открывает доступ к строго типизированной коллекции объектов Setter. Именно объект Setter обеспечивает возможность определения пар "свойство-значение".

В дополнение к коллекции Setters класс Style также определяет несколько других важных членов, которые позволяют встраивать триггеры, ограничивать место применения стиля и даже создавать новый стиль на основе существующего (воспринимайте такой прием как "наследование стилей"). Ниже перечислены наиболее важные члены класса Style:

Triggers — открывает доступ к коллекции объектов триггеров, которая делает возможной фиксацию условий возникновения разнообразных событий в стиле;

BasedOn — разрешает строить новый стиль на основе существующего;

TargetType — позволяет ограничивать место применения стиля.

<p id="AutBody_Root1233"><strong>Определение и применение стиля</strong></p>

Почти в каждом случае объект Style упаковывается как объектный ресурс. Подобно любому объектному ресурсу его можно упаковывать на уровне окна или на уровне приложения, а также внутри выделенного словаря ресурсов (что замечательно, поскольку делает объект Style легко доступным во всех местах приложения). Вспомните, что цель заключается в определении объекта Style, который наполняет (минимум) коллекцию Setters набором пар "свойство-значение".

Давайте построим стиль, который фиксирует базовые характеристики шрифта элемента управления в нашем приложении. Начните с создания в Visual Studio нового проекта приложения WPF по имени WpfStyles. Откройте файл App.xaml и определите в нем следующий именованный стиль:

 

Перейти на страницу:

Похожие книги