2

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

鉴于:

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

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

注意:这个场景是概念性的,所以不要专注于“动画”数字或任何东西的细节

4

2 回答 2

2

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

一个缺点是您的动画现在是在代码中,除非您将其模板化(只是有假值开始)版本存储在资源文件中的某个位置,您可以根据需要加载它并替换模板化值。

Josh Smith的这篇文章似乎是 Attached Behaviours 的权威;

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

于 2009-09-29T20:05:39.947 回答
0

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

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

有人有更好的方法吗?

于 2009-09-29T13:39:21.460 回答