Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

</Setter>

</Style>

Чтобы применить новый стиль, модифицируйте разметку для кнопки следующим образом:

<Button x:Name="btnAnotherButton" Content="OK!" Margin="0,10,0,0"

Style="{StaticResource TiltButton}" Width="250" Cursor="Help"/>

Такое действие изменяет внешний вид изображения, как показано на рис. 27.8.

Определение

стилей с триггерами

Стили WPF могут также содержать триггеры за счет упаковки объектов

Trigger
в коллекцию
Triggers
объекта
Style
. Использование триггеров в стиле позволяет определять некоторые элементы
Setter
таким образом, что они будут применяться только в случае истинности заданного условия триггера. Например, возможно требуется увеличивать размер шрифта, когда курсор мыши находится над кнопкой. Или, скажем, нужно подсветить текстовое поле, имеющее фокус, с использованием фона указанного цвета. Триггеры полезны в ситуациях подобного рода, потому что они позволяют предпринимать специфические действия при изменении свойства, не требуя написания явной логики С# в файле отделенного кода.

Далее приведена модифицированная разметка для стиля элементов управления типа

TextBox
, где обеспечивается установка фона желтого цвета, когда элемент
TextBox
получает фокус:

<!-- Стандартный стиль для всех текстовых полей -->

<Style TargetType="TextBox">

<Setter Property="FontSize" Value="14"/>

<Setter Property="Width" Value="100"/>

<Setter Property="Height" Value="30"/>

<Setter Property="BorderThickness" Value="5"/>

<Setter Property="BorderBrush" Value="Red"/>

<Setter Property="FontStyle" Value="Italic"/>

<!-- Следующий установщик будет применен, только

когда текстовое поле находится в фокусе -->

<Style.Triggers>

<Trigger Property="IsFocused" Value="True">

<Setter Property="Background" Value="Yellow"/>

</Trigger>

</Style.Triggers>

</Style>

При тестировании этого стиля вы обнаружите, что по мере перехода с помощью клавиши <ТаЬ> между элементами

TextBox
текущий выбранный
TextBox
получает фон желтого цвета (если только стиль не отключен путем присваивания
{x:Null}
свойству
Style
).

Триггеры свойств также весьма интеллектуальны в том смысле, что когда условие триггера не истинно, то свойство автоматически получает стандартное значение. Следовательно, как только

TextBox
теряет фокус, он также автоматически принимает стандартный цвет без какой-либо работы с вашей стороны. По контрасту с ними триггеры событий (которые исследовались при рассмотрении анимации WPF) не возвращаются автоматически в предыдущее состояние.

Определение стилей с множеством триггеров

Триггеры могут быть спроектированы так, что определенные элементы

Setter
будут применяться, когда истинными должны оказаться многие условия. Пусть необходимо устанавливать фон элемента
TextBox
в
Yellow
только в случае, если он имеет активный фокус и курсор мыши находится внутри его границ. Для этого можно воспользоваться элементом
MultiTriggern
определить в нем каждое условие:

<!-- Стандартный стиль для всех текстовых полей -->

<Style TargetType="TextBox">

<Setter Property="FontSize" Value="14"/>

<Setter Property="Width" Value="100"/>

<Setter Property="Height" Value="30"/>

<Setter Property="BorderThickness" Value="5"/>

<Setter Property="BorderBrush" Value="Red"/>

<Setter Property="FontStyle" Value="Italic"/>

<!-- Следующий установщик будет применен, только когда текстовое

поле имеет фокус И над ним находится курсор мыши -->

<Style.Triggers>

<MultiTrigger>

<MultiTrigger.Conditions>

<Condition Property="IsFocused" Value="True"/>

<Condition Property="IsMouseOver" Value="True"/>

</MultiTrigger.Conditions>

<Setter Property="Background" Value="Yellow"/>

</MultiTrigger>

</Style.Triggers>

</Style>

Стили с анимацией

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

Button
заставит их увеличиваться и уменьшаться в размерах, когда курсор мыши находится внутри границ кнопки:

Поделиться:
Популярные книги

Свадьба по приказу, или Моя непокорная княжна

Чернованова Валерия Михайловна
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Свадьба по приказу, или Моя непокорная княжна

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

Отец моего жениха

Салах Алайна
Любовные романы:
современные любовные романы
7.79
рейтинг книги
Отец моего жениха

Вадбольский

Никитин Юрий Александрович
1. Вадбольский
Фантастика:
попаданцы
5.00
рейтинг книги
Вадбольский

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

В зоне особого внимания

Иванов Дмитрий
12. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
В зоне особого внимания

Таня Гроттер и магический контрабас

Емец Дмитрий Александрович
1. Таня Гроттер
Фантастика:
фэнтези
8.52
рейтинг книги
Таня Гроттер и магический контрабас

Бастард Императора. Том 2

Орлов Андрей Юрьевич
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бастард Императора. Том 2

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Возвышение Меркурия. Книга 16

Кронос Александр
16. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 16

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9

Потусторонний. Книга 1

Погуляй Юрий Александрович
1. Господин Артемьев
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Потусторонний. Книга 1