В следующем стиле Button
я изменяю визуальное представление MouseOver с помощью VisualStateManager
. Я предпочитаю использовать ObjectAnimationUsingKeyFrames
из-за изменения целого Brush
.
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.Background)">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{x:Static Brushes.Red}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.Foreground)">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{x:Static Brushes.White}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Когда я достигаю состояния MouseOver , меняется и background , и foreground . Когда я перемещаю мышь, только фон возвращается в состояние Normal . Почему?
Примечание: я знаю решение через Trigger
из Style
. Мне интересно решение через VisualStateManager
.