從卡利微文檔中提取的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。 –