와 뷰 모델에 주입한다 EventAggregator :EventAggregator에 Caliburn 마이크로 문서에서 추출 Caliburn 마이크로
// 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의 인스턴스가 VM에 주입하는 부트 스트 래퍼에 의해 어떻게 생성합니까되는 질문?
var svm = new SomeViewModel(?);
내가 Caliburn.Micro.IoC.Get 방법을 사용하여 시도했지만 문제가 해결되지 않았다
...
IEventAggregator eventAggregator를 ViewModel 생성자에 추가하고 더 이상 기본 생성자가 없으면 VM 인스턴스를 생성 할 때 EA의 인스턴스를 전달해야합니다. 예제는 통과 할 수있는 방법입니다. 그것은 VM 생성자로 ... –
@DeanKuga 그건 내 요점은, 당신은 뷰 모델을 수동으로 만들지 않는다. 당신은 CaliburnMicro가 부트 스트 래퍼에서 전체 객체 그래프를 생성하도록하고 만약 당신이 뷰 모델을 가지고 eventAggregator를받은 ViewModel을 가지고 있다면, 읽기 전용 인스턴스 변수를 통해 참조를 유지하고 해당 ViewModel이 생성자에서 IEventAggregator를 취하는 다른 ViewModel을 수동으로 생성해야하는 경우 ViewModel에서이 인스턴스를 사용하십시오. –