【发布时间】:2016-08-11 10:10:16
【问题描述】:
还有比这更好的方法吗?:
ActivateItem(Ioc.Get<PageOneViewModel>());
我不是服务定位器模式的忠实粉丝。是否有任何其他 DI 挂钩可用于此类导航?
【问题讨论】:
标签: wpf caliburn.micro
还有比这更好的方法吗?:
ActivateItem(Ioc.Get<PageOneViewModel>());
我不是服务定位器模式的忠实粉丝。是否有任何其他 DI 挂钩可用于此类导航?
【问题讨论】:
标签: wpf caliburn.micro
您可以使 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 容器。
【讨论】: