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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 545 546 547 548 549 550 551 552 553 ... 642

<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;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  &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;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  &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;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  &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;

1 ... 545 546 547 548 549 550 551 552 553 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий