WPF 动画持续时间

问题描述 投票:0回答:3

我有一个如下所示的故事板

持续时间=“0:0:1”已完成=“DeviceExplorer_Completed”>

由于某种原因,动画似乎不是线性工作的。 如果我将持续时间更改为 Duration="0:0:0.8"

并将 stroyboard 分配给按钮的 MouseEnter 事件,动画移动但由于某种原因未完成,我将鼠标移到按钮上几次,然后才最终完成...

有什么想法吗?

wpf storyboard
3个回答
10
投票

您必须在动画而不是故事板上设置持续时间。如果未设置,动画的持续时间将默认为 1 秒,并且情节提要的结束时间比该时间短,因此无论时间长度差多少,动画都会被缩短。 当您在动画上设置持续时间时,它应该可以正常工作。


1
投票

当我动态创建故事板和动画时,我遇到了这样的问题。 对我有帮助的是确保在各个动画上设置持续时间。 您可以尝试在屏幕上放置一个按钮并使用它来触发故事板...在那里放置一个断点可以让您确保动画与故事板具有相同的持续时间。

找到解决方法后,我没有时间完全调试问题,但我怀疑这与我创建故事板和动画的顺序有关。 在我的情况下,故事板非常动态,因此调整一些额外对象的持续时间是我最不关心的。


0
投票

单独的动画需要持续时间。与其他答案一样,主要问题是

Storyboard.Duration
不会级联、设置或影响子动画持续时间。所以在故事板和孩子们上设置
Duration
故事板支持顺序动画,这可能解释了为什么它会这样。

没有绑定! 另一个问题(至少对我来说)是您无法通过绑定设置

Duration
。我将(在 XAML 中)
Storyboard.Duration
DoubleAnimation.Duration
绑定到我的属性。它没有设置其中任何一个。输入文字,或者我将其设置在代码隐藏中。

storyboard.Duration = TimeSpan.FromSeconds(0.2);
foreach (var animation in storyboard.Children)
{
    animation.Duration = TimeSpan.FromSeconds(0.2);
}
© www.soinside.com 2019 - 2024. All rights reserved.