【问题标题】:Start animation that begins with current value (handoff).以当前值开始动画(切换)。
【发布时间】:2010-12-13 01:48:54
【问题描述】:

我有一个 WPF 数据模板,其中包含一些 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>

【问题讨论】:

  • 我对这个问题的解决方案非常感兴趣。您找到解决方法了吗?

标签: wpf animation storyboard datatrigger


【解决方案1】:

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

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

【讨论】:

  • 谢谢!一直在尝试为椭圆旋转设置动画,并在触发器退出时让它“快速”回到角度 0。答案是暂停之前的故事板,然后旋转一个没有From 属性的新故事板!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
相关资源
最近更新 更多