【问题标题】:wpf style ColorAnimationUsingKeyFrames animate child elementwpf style ColorAnimationUsingKeyFrames 动画子元素
【发布时间】:2017-04-24 20:18:54
【问题描述】:

我有一个按钮(或者更确切地说是从 Button 派生的东西)包含一个网格,该网格又包含一个图像和四个标签。

我想有条件地为按钮设置动画,改变前景色和背景色使其闪烁。

这适用于背景,但不适用于标签的前景。

风格:

<Style x:Key="RequestButtonStyle" BasedOn="{StaticResource DefaultButtonStyle}" TargetType="local:CADButton">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Priority}" Value="1">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard 
                                RepeatBehavior="Forever"
                                Duration="0:0:1.5">
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(local:CADButton.Background).Color">
                                    <DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource EmergencyCallColor}"/>
                                    <DiscreteColorKeyFrame KeyTime="0:0:0.75" Value="{StaticResource DefaultButtonBackgroundColor}"/>
                                </ColorAnimationUsingKeyFrames>
                                <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)">
                                    <DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource DefaultButtonForegroundPressedColor}"/>
                                    <DiscreteColorKeyFrame KeyTime="0:0:0.75" Value="{StaticResource DefaultButtonForegroundColor}"/>
                                </ColorAnimationUsingKeyFrames>                         
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>

如何定位按钮内的任何标签?

我尝试将标签的前景绑定到按钮的前景(然后我只是设置了“前景”而不是“something.Foreground”)。这在一定程度上奏效了。问题是,我在标签上有一种样式,可以在鼠标悬停时改变颜色。完成后,绑定将被覆盖,闪烁停止。

【问题讨论】:

    标签: c# wpf animation storyboard


    【解决方案1】:

    如何定位按钮内的任何标签?

    您不能从 RequestButtonStyle 中的触发器执行此操作,因为样式设置器只能设置正在应用的类型的属性,即在这种情况下 CADButton 本身的属性。

    如果您想在按钮的 ControlTemplate 中为标签的属性设置动画,您需要为标签本身定义另一个样式并将其应用于标签。或者,您可以将 Label 的 Foreground 属性绑定到父 Button 的 Foreground 属性并为该属性设置动画。这将是最简单和最好的解决方案,因此您可能应该尝试将在鼠标悬停时更改标签颜色的触发器移动到 ControlTemplate 或按钮的样式。

    【讨论】:

    • 我都试过了。将它绑定到按钮的前景一直有效,直到第一个 MouseOver,这也改变了文本。当我为标签制作“独立样式”时,第一次鼠标悬停也停止了动画
    • 您仍然无法在按钮样式中设置标签的属性,因此如果您需要任何进一步的帮助,请提供您的问题的可重现示例,包括所有相关的 XAML 标记和代码 sn-ps...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2020-07-22
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多