有没有比这更好的方法?:
ActivateItem(Ioc.Get<PageOneViewModel>());
我不是服务定位器模式的忠实粉丝。是否还有其他DI挂钩可用于此类导航?
答案 0 :(得分:1)
您可以使PageOneViewModel
成为指挥的依赖(假设您的指挥通过集装箱解决)。
在您的app bootstrapper中,注册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容器一起使用。