开始以当前值(切换)开头的动画。

时间:2009-11-04 15:40:05

标签: wpf animation storyboard datatrigger

我有一个WPF Datatemplate包含一些 DataTriggers ,可以开始为视觉颜色设置动画。如何从color属性当前具有的实际值开始创建动画?

由于可能有另一个动画当前处于活动状态,我无法启动新动画但是当我使用 DataTriggers ExitAction和RemoveStoryboard删除动画时,position属性将设置回其默认值。

相反,我想把一个交给另一个。

这是WPF的限制,根本无法完成吗?

<DataTrigger Binding="{Binding Path=State}" Value="Active">
    <DataTrigger.EnterActions>
        <BeginStoryboard x:Name="activeStoryboard" HandoffBehavior="SnapshotAndReplace">
            <Storyboard>
                <ColorAnimation To="Green" FillBehavior="HoldEnd" Duration="00:00:0.25" 
                                Storyboard.TargetName="stateBrush" 
                                Storyboard.TargetProperty="Color" />
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="activeStoryboard" />
    </DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding Path=State}" Value="Error">
    <DataTrigger.EnterActions>
        <BeginStoryboard x:Name="errorStoryboard" HandoffBehavior="SnapshotAndReplace">
            <Storyboard>
                <ColorAnimation To="Red" FillBehavior="HoldEnd" Duration="00:00:0.25" 
                                Storyboard.TargetName="stateBrush" 
                                Storyboard.TargetProperty="Color" />
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="errorStoryboard" />
    </DataTrigger.ExitActions>
</DataTrigger>

1 个答案:

答案 0 :(得分:1)

如果你开始第二个动画,它应该可以工作,即使FillBehavior设置为Stop!

检查以下msdn:FillBehavior="Stop" and HandoffBehavior with Multiple Animations

部分