我有一位父母指挥。我想在其中显示第一个视图模型。然后,在第一个关闭之后(即完成一些操作),我想显示一个不同的视图模型。显示一个孩子虚拟机,然后显示另一个,第一个被关闭后
我使用Caliburn.Micro.Contrib,其中ConductResult显示子虚拟机在导体。它有一个很酷的扩展方法AfterClosingDo,它运行一个协程后,该孩子被关闭和关闭。
然而,当我运行使用AfterClosingDo
另一个ConductResult,基本上是这样发生的:
- 第一个孩子VM关闭
- 停用事件发生时,ConductResult运行AfterClosing行动
- 在AfterClosing,我打开第二个孩子VM使用ConductResult在父母导体
- 第二个孩子虚拟机已正确激活
- 但是,第一个子VM的停用仍然没有完成,而空项在导体
第一VM设置为活动基本上示出了负载操作的进度,第二VM示出实际数据。加载完成后,我想在父导体中显示数据(当然使用第二个VM)。
所以,我的问题:有没有干净的方式通过不重写指挥,屏幕的默认行为要做到这一点在Caliburn.Micro
,最好等
我想用EventAggregator的,虽然我不确定,如果这是最好的解决方案。
如果您有兴趣,我可能知道,为什么在DefaultCloseStrategy.Execute()中引发空引用异常。我不确定这是一个错误还是某种滥用框架,但我提出了一个问题:http://caliburnmicro.codeplex.com/workitem/301 – mnn 2013-03-31 00:20:34
真棒,我看了一下,看到了那里的null ref被抛出,但并没有远远超过当时没有CM source/pdbs的地方 - 希望它能被CM团队修复。谢谢(你的)信息! – Charleh 2013-03-31 23:25:41