通过ExitActions中的动画恢复到初始状态

时间:2012-11-22 18:11:45

标签: wpf animation templatebinding

我为标签控件制作了一个模板。它的作用是在鼠标悬停时采用边框和动画的背景。

当鼠标离开时,它应该从Background属性中读取当前值并相应地设置它们。

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsSelected" Value="false"/>
        <Condition Property="IsMouseOver" Value="true"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[0].Color" To="#003372" 
                                Duration="0:0:0.2"/>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[1].Color" To="#025092" 
                                Duration="0:0:0.2"/>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[2].Color" To="#003372" 
                                Duration="0:0:0.2"/>
            </Storyboard>
        </BeginStoryboard>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[0].Color" To="{TemplateBinding Background.GradientStops[0].Color}" 
                                Duration="0:0:0.2"/>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[1].Color" To="{TemplateBinding Background.GradientStops[1].Color}" 
                                Duration="0:0:0.2"/>
                <ColorAnimation Storyboard.TargetName="Bd" 
                                Storyboard.TargetProperty="Background.GradientStops[2].Color" To="{TemplateBinding Background.GradientStops[2].Color}" 
                                Duration="0:0:0.2"/>
            </Storyboard>
        </BeginStoryboard>
    </MultiTrigger.ExitActions>
</MultiTrigger>

问题是

To="{TemplateBinding Background.GradientStops[0].Color}"部分不起作用。我应该在那里写什么?

1 个答案:

答案 0 :(得分:15)

请勿在{{1​​}}块中为您的动画使用任何To属性。然后,目标属性应该动画回原始值。