我有一位家长指挥。我想在其中显示第一个视图模型。然后在第一个关闭后(即完成一些操作),我想显示一个不同的视图模型。
我正在使用Caliburn.Micro.Contrib,其中ConductResult在Conductor中显示子 VM 。它有一个很酷的扩展方法AfterClosingDo,它在那个孩子被停用和关闭后运行一个协程。
但是,当我使用 运行另一个 ConductResult 时AfterClosingDo
,基本上会发生这种情况:
- 第一个子虚拟机已关闭
- 发生停用事件,ConductResult 运行 AfterClosing 操作
- 在 AfterClosing 中,我使用父 Conductor 中的 ConductResult 打开第二个子 VM
- 第二个子虚拟机已正确激活
- 但是,第一个子VM的停用仍未完成,并且在Conductor中将null项设置为活动
第一个 VM 基本上显示加载操作的进度,第二个 VM 显示实际数据。加载完成后,我想在父 Conductor 中显示数据(当然是使用第二个 VM)。
所以,我的问题:有没有一种干净的方法可以做到这一点Caliburn.Micro
,最好不要覆盖导体、屏幕等的默认行为。
我正在考虑使用EventAggregator,但我不确定它是否是最好的解决方案。