【问题标题】:Implicitly disabling animations in WPF在 WPF 中隐式禁用动画
【发布时间】: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:我试试看,谢谢。

标签: c# .net wpf


【解决方案1】:

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

【讨论】:

  • 谢谢文森特。我最终通过重写我的代码逻辑来解决这个问题,因为当我发布这个问题时我找不到更好的解决方案。使用附加的依赖属性可能已经解决了这个问题,我可能不得不尝试一下。
  • 好吧,因为它没有经过测试,我不确定我的答案是否正确,但很高兴你能解决你的问题。
猜你喜欢
  • 2011-01-15
  • 2014-11-07
  • 2015-06-08
  • 2011-08-15
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多