У меня есть две анимации, которые управляют цветом границы TextBox. Одна анимация изменяет цвет от желтого до голубого по умолчанию, а одна анимация меняет цвет на значение по умолчанию. Эти анимации начинаются с триггеров на IsFocused. Это прекрасно работает.WPF Конфликтующие анимации
Теперь я хочу, чтобы те же анимации запускались также с помощью IsMouseOver. Мое желаемое поведение заключается в том, что граница TextBox должна быть синей, если она имеет фокус, или если мышь нависает над ней, в противном случае она должна быть желтой. И должен быть анимированный переход между состояниями.
Как уже упоминалось, изменение цвета с помощью анимации, когда TextBox получает или теряет фокус, не является проблемой. Также нет проблем с изменением цвета, когда мышь перемещается по TextBox. Проблема состоит в том, чтобы ОБА. Тогда есть конфликт ...
Как я могу использовать обе эти анимации?
Вот код с обеих анимаций, но это НЕ работает, как я хочу, из-за конфликта. Что происходит, если я парить над TextBox раз анимации никогда не будет работать на IsFocused снова ...
<TextBox Width="200" Height="140" BorderBrush="Yellow" BorderThickness="4">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Resources>
<Storyboard x:Key="RecievedFocusOrMouseOverAnimation">
<ColorAnimation
Storyboard.TargetProperty="BorderBrush.(SolidColorBrush.Color)"
To="Blue"
Duration="0:0:0.2" />
</Storyboard>
<Storyboard x:Key="LostFocusOrMouseOutAnimation">
<ColorAnimation
Storyboard.TargetProperty="BorderBrush.(SolidColorBrush.Color)"
To="Yellow"
Duration="0:0:0.2" />
</Storyboard>
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Name="IsFocusedTrueBeginStoryBoard" Storyboard="{StaticResource RecievedFocusOrMouseOverAnimation}" />
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Name="IsFocusedFalseBeginStoryBoard" Storyboard="{StaticResource LostFocusOrMouseOutAnimation}" />
</Trigger.ExitActions>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Name="IsMouseOverTrueBeginStoryboard" Storyboard="{StaticResource RecievedFocusOrMouseOverAnimation}" />
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Name="IsMouseOverFalseBeginStoryboard" Storyboard="{StaticResource LostFocusOrMouseOutAnimation}" />
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
Спасибо! Это отлично работает! :) – haagel