Вы можете сделать PageOneViewModel
зависимостью вашего проводника (при условии, что проводник разрешается через контейнер).
В вашем приложении загрузчике, зарегистрируйтесь PageOneViewModel
:
container = new SimpleContainer();
//...
container
.PerRequest<MyViewModel>()
.PerRequest<PageOneViewModel()>;
А в вашем проводнике:
public MyViewModel : Conductor
{
// require PageOneViewModel as a dependency
public MyViewModel(PageOneViewModel pageOne)
{
PageOne = pageOne;
}
PageOneViewModel PageOne { get; set; }
public override void OnActivate()
{
base.OnActivate();
ActivateItem(PageOne);
}
}
Обратите внимание, что я использую SimpleContainer
(тот, который поставляется с Caliburn Micro) здесь. Он должен работать с другими контейнерами DI.
Thanks Doom5. Это похоже на хорошее решение. Это может стать немного тяжелым, если мой дирижер проводит огромное количество просмотров. Загрузка их впереди. Но я думаю, что это компромисс. В любом случае, даже если у Caliburn.Micro был DI-крючок, который работал для инъекции в ActivateItem, он больше всего хотел бы сделать местоположение службы в фоновом режиме. Я уверен, что Марк Seemann, вероятно, имеет сильное представление по этому вопросу :) – onefootswill