извлеченного из документации Caliburn Micro на EventAggregator:Вводят EventAggregator в ViewModel с Caliburn Micro
// 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, созданный Bootstrapper впрыснуть в ВМ?
var svm = new SomeViewModel(?);
Я попытался с помощью метода Caliburn.Micro.IoC.Get, но это не работает ...
Это был просто пример, когда вы добавляете конструктор событий IEventAggregator в конструктор ViewModel и у вас больше нет конструктора по умолчанию, вы должны передать экземпляр EA при создании экземпляра вашей виртуальной машины ... мой вопрос состоял в том, как получить экземпляр для прохождения он в конструктор VM ... –
@DeanKuga Это моя точка зрения, вы не создаете модели представления вручную, вы позволяете CaliburnMicro создавать весь граф объектов для вас из загрузочного устройства, и если у вас есть ViewModel, где вы получили eventAggregator через конструктор, сохраните ссылку на него через переменную экземпляра только для чтения и используйте этот экземпляр в вашей модели ViewModel, если этому ViewModel необходимо вручную создать другие ViewModels, которые принимают IEventAggregator в своем конструкторе. –