如何在MVVM中的模块/视图之间进行动画处理?

时间:2010-04-22 13:59:06

标签: silverlight mvvm expression-blend

我有一个MVVM Silverlight 4应用程序,它在主窗口的ViewModel中包含一个模块列表(UserControl加上一些元数据)。我在ContentControl中显示模块的UserControl(内容绑定到“CurrentModule.View”)。

我希望通过宣传视图之间的过渡来为应用添加一些流行音乐。我为PreLoaded,Normal和Unloaded创建了Visual States。实例化UserControl时,我将其状态设置为PreLoaded。我已将GoToStateAction附加到UserControl的Loaded事件,该事件将状态设置为“Normal”,执行一个很好的动画以使View进入视图。这很好。

当用户切换模块时,如果将其动画显示在视图之外,我现在需要做什么。我有另一个GoToStateAction附加到UserControl的“已卸载”事件,该事件将状态设置为“已卸载”。我知道目前的设置不起作用。 ContentControl一次只能显示一个UserControl - 一旦切换发生,前一个模块就会消失。我无法确定动画是否在视图上运行,即使它不可见。

我如何完成我在这之后所做的事情?请记住,Iam尝试以MVVM友好的方式执行此操作,但是当我纯粹以演示文稿为重点时,我并不反对某些代码隐藏。

提前致谢! StackOverflow从未让我失望!

亚当

1 个答案:

答案 0 :(得分:1)

考虑使用TransitioningContentControl 这是一个Silverlight Toolkit控件,一旦你更改内容有一个很好的过渡动画。