wpf样式ColorAnimationUsingKeyFrames动画子元素

时间:2016-12-09 11:03:55

标签: c# wpf animation storyboard

我有一个按钮(或者更确切地说是从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>

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

我试图在某种程度上绑定标签&#39;前景到按钮的前景(然后我只是设置&#34;前景&#34;而不是&#34; something.Foreground&#34;)。这在某种程度上起了作用。问题是,我在标签上有一个样式,可以改变鼠标悬停时的颜色。完成后,绑定将被覆盖,闪烁停止。

1 个答案:

答案 0 :(得分:0)

  

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

您无法通过RequestButtonStyle中的触发器执行此操作,因为样式设置器只能设置要应用的类型的属性,即此情况下CADButton本身的属性。

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

相关问题