2013-06-30 2 views
0

Если я использую ControlTemplate.Triggers, которые используются <Trigger Property="IsMouseOver" Value="True">
Как восстановить предыдущее значение в том случае, IsMouseOver будет ложным?Восстановление предыдущего значения в результате триггера

(например, изменение фона на зеленый на IsMouseOver=true и вернуться к предыдущему цвету до изменения предыдущий цвет может быть установлен на сам контроль и не обязательно внутри стиля.)

Грани:

  1. Я использую stoaryboard в триггере
  2. в стиле управления я установить фон в голубой
  3. при осуществлении окна с контролем я устанавливаю Contro l в стиле, но установите фон элемента управления на красный.
  4. Я хочу установить анимацию, которая изменит ее с красного на зеленый, и когда IsMouseOver = false вернет ее снова на красный.

Пожалуйста, помогите мне!

+0

Я забыл указать, что я использую раскадровку, и это является причиной проблемы. – user436862

ответ

0

Триггеры не изменяют значение постоянно, они могут быть активными и неактивными, если они неактивны, вы автоматически получаете предыдущее значение (в соответствии с rules of precedence).

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

Как вы используете анимацию, которая будет переопределять все другие вещи, вы можете анимировать ее обратно через Trigger.ExitActions, но вам нужно знать исходное значение для этого.

+0

Не существует способа вернуться к исходному значению, установленному в фактическом определении элемента управления? (Пример - Сетка с этим элементом управления. Элемент управления будет определять в сетке со стилем X, а фон в свойстве элемента управления будет установлен на красный, но стиль по умолчанию синий. Я хочу вернуть его в красный цвет в приведенном выше сценарии .) – user436862

+0

@ user436862: Анимационные сценарии неприятны, вы можете анимировать другой слой между вашим цветным шаблоном и прозрачным, тогда ваш индивидуальный фон всегда может быть одним и тем же. –

Смежные вопросы