从卡利微文档中提取的EventAggregator:进样EventAggregator到视图模型与卡利微
// Creating the EventAggregator as a singleton.
public class Bootstrapper : BootstrapperBase {
private readonly SimpleContainer _container =
new SimpleContainer();
// ... Other Bootstrapper Config
protected override void Configure(){
_container.Singleton<IEventAggregator, EventAggregator>();
}
// ... Other Bootstrapper Config
}
// Acquiring the EventAggregator in a viewModel.
public class FooViewModel {
private readonly IEventAggregator _eventAggregator;
public FooViewModel(IEventAggregator eventAggregator) {
_eventAggregator = eventAggregator;
}
}
所以,你如何EA的情况下通过引导程序创建注入到你的虚拟机的问题?
var svm = new SomeViewModel(?);
我尝试使用Caliburn.Micro.IoC.Get方法,但没有奏效...
这只是一个例子,一旦你添加IEventAggregator eventAggregator到ViewModel的构造函数,并且你不再有默认的构造函数,你必须通过一个EA的实例,当你实例化你的VM时......我的问题是如何让实例通过它进入虚拟机的构造... –
@DeanKuga这是我的观点,你不会手动创建视图模型,你让CaliburnMicro从引导程序为你创建整个对象图,并且如果你有一个ViewModel你通过接收eventAggregator构造函数,通过只读实例变量保存对它的引用,并在ViewModel中使用此实例,如果该ViewModel需要手动创建其他构造函数中带有IEventAggregator的ViewModel。 –