【发布时间】:2012-01-17 14:05:15
【问题描述】:
我正在 WPF 和 .Net 4 中开发一个包含动画的应用程序。
我的控件绑定到业务逻辑中的某些值,在某些条件下切换动画。我遇到的问题是,这些动画可能会在应用程序启动后立即播放,这使得控件在首次显示时“动画化”到其初始状态。
假设我正在开发应用程序的登录部分。我有一个控件,它代表一个自定义弹出窗口,如果它们无效,它应该出现在用户名和密码字段上方。当应用程序启动时,这两个字段默认都是无效的,这会提示弹出窗口通过动画显示。我想阻止这些动画在启动时播放,而不是明确禁用它们。
另一个演示我的问题的示例是绑定到布尔属性的切换按钮。如果我在关闭应用程序之前将按钮的状态保存为已切换,则当应用程序重新启动时(因为我在切换状态之间有动画),按钮将“动画”到切换状态,而不是简单地切换没有动画。
有没有办法暂时禁止所有动画播放?
我在某处读到禁用动画的最佳方法是在特定情节提要上调用 SkipToFill(...)。这样做的问题是我必须明确禁用所有相关动画,如果事先不知道这些动画,这可能是个问题。
Storyboard theBoard = (Storyboard)FindResource(resourceName);
theBoard.Begin(this, true);
theBoard.SkipToFill(this);
如果不逐一明确禁用动画,您将如何禁用它们?这样的事情有可能吗?
【问题讨论】:
-
问题不是你的视图,而是触发视图显示用户名和密码的逻辑无效。你什么时候检查它们是否有效?
-
我有两个布尔属性,UsernameIsValid 和 PasswordIsValid,默认为 false。如果字段不为空且用户名不包含特殊字符,则该字段有效。当用户在任一字段中键入时,都会检查这些条件。当两者都有效时,登录按钮被启用。我理解你的观点,我想在启动时将它们标记为有效,但我不想“破解”系统。
-
@Hussein Khalil 我相信 UI DP 元数据选项之一是 - Animatable,所以大概您可以尝试将其设置为 false,这会有所帮助吗?
-
@user572559:我试试看,谢谢。