在通用应用程序中将鼠标悬停在按钮上时,禁用该按钮上的动画

时间:2016-02-26 11:35:08

标签: c# win-universal-app windows-10-universal

我已经在这样的通用应用程序中为我的按钮定义了这个样式,当我将鼠标悬停在它上面时,我尝试删除按钮大小的最小化:

enter image description here

但我失败了,我也试图删除PointerOver Block,但这会影响我为按钮定义的颜色反转样式:(

<VisualState x:Name="PointerOver"></VisualState>

这是我的风格:

 <Style TargetType="Button" x:Key="btnForgroundColorWhenHoverWhite">
    <Setter Property="Foreground" Value="White"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="RootGrid" Background="{TemplateBinding Background}">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal">
                                <Storyboard>
                                    <PointerUpThemeAnimation Storyboard.TargetName="RootGrid" />
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="PointerOver">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
                                               Storyboard.TargetProperty="Background">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="White" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                               Storyboard.TargetProperty="BorderBrush">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
                                               Storyboard.TargetProperty="Foreground">
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="#1d84eb" />
                                    </ObjectAnimationUsingKeyFrames>
                                    <PointerDownThemeAnimation Storyboard.TargetName="RootGrid" />
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter x:Name="ContentPresenter"
                      BorderBrush="Transparent"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      Content="{TemplateBinding Content}"
                      ContentTransitions="{TemplateBinding ContentTransitions}"
                      ContentTemplate="{TemplateBinding ContentTemplate}"
                      Padding="{TemplateBinding Padding}"
                      HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                      VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                      AutomationProperties.AccessibilityView="Raw"
                                      Foreground="White"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

所以请问,当我将鼠标悬停在按钮上时,是否可以禁用按钮上的动画

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您只需从故事板中删除PointerDownThemeAnimation。这是控制最小化效应的那个。

<PointerDownThemeAnimation Storyboard.TargetName="RootGrid" />

如果要完全删除PointerOver动画,可以删除PointerOver视觉状态的内容

<VisualState x:Name="PointerOver">
    <Storyboard>

    </Storyboard>
</VisualState>