我想使用一个DoubleAnimation
动画一个双- DependencyProperty
在鼠标上方取决于它的当前值。为了简单起见,让我们假设我想动画一个ListBoxItem,当我将鼠标悬停在它上面时,它会稍微向右移动,当鼠标被移开时,它会向后移动。
我开始定义<DoubleAnimation By="5">
和<DoubleAnimation By="-5">
在我的鼠标over - trigger的EnterActions
和ExitActions
。如果我将鼠标悬停在对象上足够长的时间,这将有效,但如果我通过移动鼠标来中断第一个动画,则第二个动画将比第一个动画运行的时间更长。因此,在所有动画完成后,对象的位置稍微偏离。
我可以在故事板中使用FillBehaviour="Stop"
来修复所有动画完成后对象的状态。然而,这使得物体弹回原位,这显然看起来相当令人恼火。
我想喜欢要做的是在第二个DoubleAnimation
中指定To
-属性为我的属性的原始值。这最初是由Converter
计算的,所以我试图将该属性绑定到已经存在的Converter
。由于线程问题,这会抛出一个错误(虽然我一开始很惊讶,但google解释得很好)。我甚至找到了一篇关于这个(WPF动画)的文章:绑定到"To"属性的故事板动画),也许可以修改它,以适应我的情况。然而,这感觉像是一个"黑客"的解决方案。
问题:我觉得我的想法不够直接了。我所要做的就是在鼠标悬停时"移动"一个对象,然后"移动"它回来。有简单的方法吗?
正如Sinatr在评论中指出的那样,在ExitActions
中定义<DoubleAnimation>
(跳过By="-5"
)就足够了。这将默认为初始值,而不是当前动画中使用的值。