KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Перейти на страницу:

<b>&lt;!-- Стандартный стиль для всех текстовых полей --&gt;</b>

&lt;Style TargetType=&quot;TextBox&quot;&gt;

  &lt;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot;/&gt;

  &lt;Setter Property=&quot;Width&quot; Value=&quot;100&quot;/&gt;

  &lt;Setter Property=&quot;Height&quot; Value=&quot;30&quot;/&gt;

  &lt;Setter Property=&quot;BorderThickness&quot; Value=&quot;5&quot;/&gt;

  &lt;Setter Property=&quot;BorderBrush&quot; Value=&quot;Red&quot;/&gt;

  &lt;Setter Property=&quot;FontStyle&quot; Value=&quot;Italic&quot;/&gt;

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

<b>       когда текстовое поле находится в фокусе --&gt;</b>

  &lt;Style.Triggers&gt;

    &lt;Trigger Property=&quot;IsFocused&quot; Value=&quot;True&quot;&gt;

      &lt;Setter Property=&quot;Background&quot; Value=&quot;Yellow&quot;/&gt;

    &lt;/Trigger&gt;

  &lt;/Style.Triggers&gt;

&lt;/Style&gt;

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

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

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

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

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

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

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

<b>&lt;!-- Стандартный стиль для всех текстовых полей --&gt;</b>

&lt;Style TargetType=&quot;TextBox&quot;&gt;

  &lt;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot;/&gt;

  &lt;Setter Property=&quot;Width&quot; Value=&quot;100&quot;/&gt;

  &lt;Setter Property=&quot;Height&quot; Value=&quot;30&quot;/&gt;

  &lt;Setter Property=&quot;BorderThickness&quot; Value=&quot;5&quot;/&gt;

  &lt;Setter Property=&quot;BorderBrush&quot; Value=&quot;Red&quot;/&gt;

  &lt;Setter Property=&quot;FontStyle&quot; Value=&quot;Italic&quot;/&gt;

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

<b>       поле имеет фокус И над ним находится курсор мыши --&gt;</b>

  &lt;Style.Triggers&gt;

    &lt;MultiTrigger&gt;

      &lt;MultiTrigger.Conditions&gt;

          &lt;Condition Property=&quot;IsFocused&quot; Value=&quot;True&quot;/&gt;

          &lt;Condition Property=&quot;IsMouseOver&quot; Value=&quot;True&quot;/&gt;

      &lt;/MultiTrigger.Conditions&gt;

      &lt;Setter Property=&quot;Background&quot; Value=&quot;Yellow&quot;/&gt;

    &lt;/MultiTrigger&gt;

  &lt;/Style.Triggers&gt;

&lt;/Style&gt;

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

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

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

<b>&lt;!-- Стиль увеличивающейся кнопки --&gt;</b>

&lt;Style x:Key=&quot;GrowingButtonStyle&quot; TargetType=&quot;Button&quot;&gt;

  &lt;Setter Property=&quot;Height&quot; Value=&quot;40&quot;/&gt;

  &lt;Setter Property=&quot;Width&quot; Value=&quot;100&quot;/&gt;

  &lt;Style.Triggers&gt;

    &lt;Trigger Property=&quot;IsMouseOver&quot; Value=&quot;True&quot;&gt;

      &lt;Trigger.EnterActions&gt;

        &lt;BeginStoryboard&gt;

          &lt;Storyboard TargetProperty=&quot;Height&quot;&gt;

            &lt;DoubleAnimation From=&quot;40&quot; To=&quot;200&quot;

                Duration=&quot;0:0:2&quot; AutoReverse=&quot;True&quot;/&gt;

          &lt;/Storyboard&gt;

        &lt;/BeginStoryboard&gt;

      &lt;/Trigger.EnterActions&gt;

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*