动态动画,命令和关注点分离

时间:2009-09-29 12:09:40

标签: wpf silverlight animation prism separation-of-concerns

场景:我有一个(数字)文本框,一个按钮和一个标签。单击按钮时,我希望标签“动画”为文本框中的数值(如旋转拨号盘)

假设:

a)故事板中的动画不能有数据绑定(因为它们不是FrameworkElements) b)Silverlight中缺少触发器

视图模型与视图故事板的最佳耦合是什么,更新目标动画值并在单击按钮时启动动画的方法是什么?

注意:场景是概念性的,所以不要专注于“动画”数字或其他任何内容的细节

2 个答案:

答案 0 :(得分:2)

如果你的目标是严格减少视图中的代码隐藏,我认为Label上的附加行为对此有用。标签上附加的行为将公开要动画的数字,当此数字更改时,动画(在代码中)将运行以从旧值动画到新值。

一个缺点是你的动画现在是代码,除非你在一个资源文件中存储一个模板化的(只有伪开始的值)版本,你可以根据需要加载它并替换模板化的值。 / p>

article from Josh Smith似乎是附加行为的权威;

http://joshsmithonwpf.wordpress.com/2008/08/30/introduction-to-attached-behaviors/

答案 1 :(得分:0)

我最近不得不解决MVVM应用程序中的类似问题。我的问题是我需要将容器的高度从零动画到自动。由于Auto是一个动态值,我认识到需要根据需要构建(或操纵)动画(或故事板)。我实施的解决方案涉及使用视图代码隐藏来更新和触发动画。

这不是MVVM最友好的方法;但是,在XAML中,WPF中的动画可能很棘手。由于此解决方案实际上只是XAML限制的解决方法,因此将代码直接绑定到视图似乎是可以的。同样,如果视图被模拟,那么就没有动画的框架元素,所以将这些代码放在VM端真的没有意义。

有人有更好的方法吗?