C# 根据当前状态设置双值动画
我想使用C# 根据当前状态设置双值动画,c#,wpf,xaml,animation,C#,Wpf,Xaml,Animation,我想使用DoubleAnimation在鼠标上方根据其当前值设置double-dependencProperty动画。为了简单起见,让我们假设我想设置ListBoxItem的动画,使其在鼠标悬停在ListBoxItem上时稍微向右移动,并在移除鼠标时向后移动 首先,我在鼠标悬停触发器的进入操作和退出操作中定义了和。如果我将鼠标悬停在对象上足够长的时间,这很好,但是如果我通过移动鼠标中断第一个动画,第二个动画将比第一个动画运行更长的时间。因此,在完成所有动画后,对象的位置会稍微偏移 我可以在脚本中
DoubleAnimation
在鼠标上方根据其当前值设置double-dependencProperty
动画。为了简单起见,让我们假设我想设置ListBoxItem的动画,使其在鼠标悬停在ListBoxItem上时稍微向右移动,并在移除鼠标时向后移动
首先,我在鼠标悬停触发器的进入操作和退出操作中定义了
和
。如果我将鼠标悬停在对象上足够长的时间,这很好,但是如果我通过移动鼠标中断第一个动画,第二个动画将比第一个动画运行更长的时间。因此,在完成所有动画后,对象的位置会稍微偏移
我可以在脚本中使用fillbehavior=“Stop”
在所有动画完成后修复对象的状态。但是,这会使对象弹回到原来的位置,这显然看起来很恼人
我想做的是在第二个DoubleAnimation
中指定to
-属性作为我的属性的原始值。这最初是由一个转换器
计算的,因此我尝试将该属性绑定到已经存在的转换器
。由于线程问题,这会抛出一个错误(虽然一开始我很惊讶,但谷歌很好地解释了原因)。我甚至找到了一篇关于这个()的帖子,也许可以修改它以适应我的情况。然而,这感觉像是一个“黑客”解决方案
问题:我觉得我的想法不够直截了当。我只想在鼠标上方“移动”一个对象,然后再“移动”回来。有没有一种简单的方法可以做到这一点?正如Sinatr在评论中指出的那样,只需在退出中定义
(通过=“-5”
跳过)。这将默认为初始值,而不是动画中当前使用的值。正如Sinatr在评论中指出的那样,只需在退出操作中定义
(通过=“-5”
跳过)。这将默认为初始值,而不是动画中当前使用的值。如果未将指定为
,则使用实际值(设置的值,而不是保留中动画设置的值)。试试看是否有效。如果没有,则使用停止/保持的组合-进入动作动画保持其动画,而退出则停止。在退出操作中,指定到或由执行都没有起作用。谢谢-这比预期的要简单!如果未将指定为
,则将使用实际值(设置的值,而不是由“保持”中的动画设置的值)。试试看是否有效。如果没有,则使用停止/保持的组合-进入动作动画保持其动画,而退出则停止。在退出操作中,指定到或由执行都没有起作用。谢谢-这比预期的要简单!如果未将指定为
,则将使用实际值(设置的值,而不是由“保持”中的动画设置的值)。试试看是否有效。如果没有,则使用停止/保持的组合-进入动作动画保持其动画,而退出则停止。在退出操作中,指定到或由执行都没有起作用。谢谢-这比预期的要简单!