Визуальное состояние - возврат в нормальное состояние - PullRequest
0 голосов
/ 28 августа 2018

В следующем стиле 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.

...