У меня есть один родительский проводник. Я хочу показать первую модель просмотра внутри нее. Затем, после закрытия первого (т.е. выполнения некоторой операции), я хочу показать другую модель представления.
Я использую Caliburn.Micro.Contrib, где ConductResult отображает дочернюю ВМ в Conductor. У него есть классный метод расширения AfterClosingDo, который запускает сопрограмму после деактивации и закрытия дочернего элемента.
Однако, когда я запускаю другой ConductResult, используя AfterClosingDo
, в основном это происходит:
- первая дочерняя виртуальная машина закрыта
- Происходит деактивированное событие, ConductResult запускает действие AfterClosing
- в AfterClosing я открываю вторую дочернюю виртуальную машину, используя ConductResult в родительском проводнике
- вторая дочерняя виртуальная машина правильно активирована
- однако деактивация первой дочерней ВМ еще не завершена, а элемент null установлен как активный в проводнике
Первая виртуальная машина в основном показывает ход операции загрузки, вторая виртуальная машина показывает фактические данные. После завершения загрузки я хочу показать данные в родительском проводнике (конечно, используя вторую виртуальную машину).
Итак, мой вопрос: есть ли чистый способ сделать это в Caliburn.Micro
, предпочтительно, не переопределяя поведение проводника, экрана и т. д. по умолчанию.
Я думал об использовании EventAggregator, хотя не уверен, что это лучшее решение.