2010-04-16 72 views
0

好的我已经看过并搜索了所有我想要做的就是从我的视图模型中将故事板动画展开到我的视图上。问题是,只有太多的样板代码才能获得像myStoryboard.Begin()这样简单的东西。射击。那么你使用什么方法?目前,我正在使用Silverlight 3,MVVM Light。Silverlight中的动画和MVVM

编辑:因为我的动画关键帧涉及我不能使用类似的视觉状态管理,我不想再重复他们进入状态。

回答

0

我通常会欺骗并允许ViewModel通过接口访问视图。然后,我可以为VM中的某些绑定添加代码隐藏功能,这些功能对于纯XAML来说很尴尬。

你也可以在视图中创建一个DependencyProperty,它绑定到虚拟机上的布尔属性然后创建一个触发器引发的动画时的财产变成真。这仍然需要代码隐藏中的一些样板来定义DP,但至少现在Binding引擎仍在执行通信。

+0

我同意Dan的第二个解决方案(视图上的DependencyProperty)。我不会亲自想要允许虚拟机访问视图,虽然... – Surfbutler 2010-04-22 19:58:10

+0

我喜欢使用'IParticularView'模式的情况下,通过绑定纯属性驱动的语法是尴尬的。这通常意味着虚拟机想要告诉View执行某些操作,比如启动一个动画,弹出一个警告框等等。视图/虚拟机强烈地耦合,并且通过一个接口抽象它仍然允许将查看测试。 – 2010-04-22 21:54:22