我有一个Prism应用程序,它以一个启动画面开始,然后需要切换到一个开始视图。下面是我希望这将完成这一模块的初始化方法的代码:动画完成时切换视图
public void Initialize() {
RegisterViewsAndServices();
//_manager.RegisterViewWithRegion(RegionNames.Content, typeof(ToolboxSplashView));
var vmSplash = _unityContainer.Resolve<IToolboxSplashViewModel>();
IRegion region = _regionManager.Regions[RegionNames.Content];
region.Add(vmSplash.View);
var vmStart = _unityContainer.Resolve<IToolboxStartViewModel>();
region.Deactivate(vmSplash.View);
region.Add(vmStart.View);
}
不幸的是,当我运行此我只看到了开始视图。如果我注释掉开始视图(代码的最后一段),我会看到开始屏幕和动画。如何检测动画已完成,然后从“初始”视图更改为“开始”视图?
谢谢。
好的,我可以看到那种。什么触发了聚合事件?我是否在视图模型中捕获它,然后传回模块以完成加载过程?或者我可以在这里做到这一切吗? – JimBoone 2012-02-22 22:25:20
听起来好像它应该在视图中的代码隐藏中,因为它与动画完成有关。您将在Completed事件中引发一个Aggregate Event。您是Controller类已订阅了AggregateEvent,然后执行必要的代码。动画完成事件示例:http://social.msdn.microsoft.com/Forums/ar/wpf/thread/0b040d2e-155b-4abd-911d-ea7f72784fd0 – michael 2012-02-23 14:42:43
您对完成的事件是正确的,该事件工作并带我到代码后面的事件处理程序。我研究和测试了你的聚合事件想法,但无法让他们工作。事件被解雇,但事件发生时该模块已经关闭。我能够使导航工作,因为这两个视图在同一个模块中。我已将解决方案放在下面的答案中。 – JimBoone 2012-02-24 15:10:25