我有一個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