1

我有一个 WPF Datatemplate,其中包含一些DataTriggers,它们开始为视觉对象的颜色设置动画。如何从颜色属性当前具有的实际值开始动画?

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

相反,我想将一个移交给另一个。

这是 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>
4

1 回答 1

1

如果您启动第二个动画,它应该可以工作,即使 FillBehavior 设置为停止!

检查 msdn 上的以下部分:FillBehavior="Stop" and HandoffBehavior with Multiple Animations

于 2010-12-03T10:09:23.243 回答