动画线索应该在我的视图模型中吗? MVVM

问题描述:

我重构一个Silverlight LOB应用程序使用MVVM ..动画线索应该在我的视图模型中吗? MVVM

在我控制我有目前得到的代码隐藏一旦数据被加载引发了一些动画..

这是查看特定数据并且由于视图模型被认为是无头稍微(不依赖于像动画视图对象)..

应该在哪里这个代码是什么?

感谢

一个DataTrigger,一个DataTrigger!我的DataTrigger王国!

在WPF中,您可以根据ViewModel中的数据触发动画。在Silverlight中,他们使用VSM ......我仍然没有想过如何完成这个任务。显然,Blend Behavior SDK(可以单独下载)提供了一种DataTrigger近似,VSM的触发基于绑定行为。 This * question(不是接受的答案,但是由Mike Post发布的答案)显示了如何做到这一点...并且后续答案显示了如何在没有混合的情况下做到这一点。

+0

我给你+1幽默。程序员需要更多的! = d – 2011-06-09 17:11:12

+0

好答案..拼命想用VSM ..但唯一的问题是控制是一个网格..而你不能设置一个模板在网格上,有什么建议? – 2011-06-10 09:37:16

+0

您正试图在面板中设置动画效果吗?或者你更关心网格中的元素。例如,如果您试图在数据加载时将控件动画到视图中,则只需直接指向该对象。如果你正在尝试动画整个网格,请将其包装在UserControl中并将其作为目标。 – 2011-06-10 14:32:43

总之,你可以拼凑动画触发数据触发 - 没有后台代码需要。其他View技术(不是WPF或Silverlight)将要求您向ViewModel添加“数据加载完成”事件。

MVVM简直是MVP与WPF/Silverlight的整合,使信号这样的事情更容易。我相信WPF包含一个数据触发器,可以用来触发动画。这允许您放弃向ViewModel添加“数据加载完成”事件。你现在可以添加事件,但是你可能会浪费你的时间,为可能不需要的MVP兼容性准备代码。

MVVM和MVP的目的是使演示视图互换。考虑WinForms,WinCE,纯文本终端(甚至文本到语音)View如何通知用户数据已加载。每种技术的行为都会有所不同。因此,当不使用WPF或Silverlight时,更改用户界面的行为应该驻留在View的代码隐藏中。

+0

+1对于为什么动画是一个视图问题有一个很好的解释,应该留在视图中。 – avanek 2011-06-09 17:09:15

+1

绝对很好的答案......要添加到你所说的话,今天的需求可能是一个动画,明天它可能会显示以前隐藏的用户界面部分。虚拟机不应该关心会发生什么情况,只需提供足够的信息以便View可以响应。\ – 2011-06-09 17:15:15