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