Язык программирования C#9 и платформа .NET5
Часть 549 из 642 Информация о книге
<b><!-- Стандартный стиль для всех текстовых полей --></b><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"/><b> <!-- Следующий установщик будет применен, только</b><b> когда текстовое поле находится в фокусе --></b><Style.Triggers><Trigger Property="IsFocused" Value="True"><Setter Property="Background" Value="Yellow"/></Trigger></Style.Triggers></Style>При тестировании этого стиля вы обнаружите, что по мере перехода с помощью клавиши <ТаЬ> между элементами
текущий выбранныйTextBoxполучает фон желтого цвета (если только стиль не отключен путем присваиванияTextBoxсвойству{x:Null}).StyleТриггеры свойств также весьма интеллектуальны в том смысле, что когда условие триггера не истинно, то свойство автоматически получает стандартное значение. Следовательно, как только
теряет фокус, он также автоматически принимает стандартный цвет без какой-либо работы с вашей стороны. По контрасту с ними триггеры событий (которые исследовались при рассмотрении анимации WPF) не возвращаются автоматически в предыдущее состояние.TextBoxОпределение стилей с множеством триггеров
Триггеры могут быть спроектированы так, что определенные элементы
будут применяться, когда истинными должны оказаться многие условия. Пусть необходимо устанавливать фон элементаSetterвTextBoxтолько в случае, если он имеет активный фокус и курсор мыши находится внутри его границ. Для этого можно воспользоваться элементомYellowопределить в нем каждое условие:MultiTriggern<b><!-- Стандартный стиль для всех текстовых полей --></b><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"/><b> <!-- Следующий установщик будет применен, только когда текстовое</b><b> поле имеет фокус И над ним находится курсор мыши --></b><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<b><!-- Стиль увеличивающейся кнопки --></b><Style x:Key="GrowingButtonStyle" TargetType="Button"><Setter Property="Height" Value="40"/><Setter Property="Width" Value="100"/><Style.Triggers><Trigger Property="IsMouseOver" Value="True"><Trigger.EnterActions><BeginStoryboard><Storyboard TargetProperty="Height"><DoubleAnimation From="40" To="200"Duration="0:0:2" AutoReverse="True"/></Storyboard></BeginStoryboard></Trigger.EnterActions>