隐含地禁用WPF中的动画

本文关键字:动画 WPF | 更新日期: 2023-09-27 18:20:45

我正在WPF和.Net 4中开发一个包含动画的应用程序。

我的控件绑定到业务逻辑中的某些值,该逻辑在特定条件下切换动画。我遇到的问题是,这些动画可能会在应用程序启动后立即播放,这会使控件在首次显示时朝着初始状态"动画化"。

比方说,我正在开发应用程序的登录部分。我有一个代表自定义弹出窗口的控件,如果用户名和密码字段无效,它应该出现在这些字段上方。当应用程序启动时,默认情况下这两个字段都无效,这将提示通过动画显示弹出窗口。我想防止这些动画在启动时播放,而不明确禁用它们。

演示我的问题的另一个例子是绑定到布尔属性的切换按钮。如果我在关闭应用程序之前将按钮的状态保存为切换状态,则当应用程序重新启动时,按钮将朝切换状态"动画化"(因为我在切换状态之间有动画),而不是简单地在没有动画的情况下切换。

有没有办法暂时禁止播放所有动画?

我在某个地方读到,禁用动画的最佳方法是在特定的情节板上调用SkippToFill(…)。问题是,我必须明确禁用所有相关的动画,如果事先不知道这些,这可能是一个问题。

Storyboard theBoard = (Storyboard)FindResource(resourceName); 
theBoard.Begin(this, true); 
theBoard.SkipToFill(this); 

在不逐个明确禁用动画的情况下,如何禁用动画?这样的事情可能吗?

隐含地禁用WPF中的动画

使用附加的依赖属性(附加在StoryBoards上)来启用或禁用动画(或将其持续时间设置为0)怎么样?也许有一个更简单的解决方案,但由于似乎没有人提出,我建议这样做
Rq:我不确定窗户打开时的控制是不是很无聊。但我不知道,也许如果屏幕上有很多动画,也许它看起来很奇怪。