[英]Caliburn Micro MVVM Multiple Active Items AND IoC Dependency Injection
[英]Setting up dependency injection with Caliburn Micro & Ninject
我正在嘗試使用Caliburn Micro和Ninject框架在新的WPF項目中設置依賴注入。 不幸的是我沒有成功:(在互聯網上有一些例子實現了一個通用的Bootstrap,但對我來說,通用的Bootstrap類是不可用的,因為所有這些例子都至少3年了,我猜它們已經被棄用了......
我試過的是以下內容:
public class CbmBootstrapper : BootstrapperBase
{
private IKernel kernel;
protected override void Configure()
{
this.kernel = new StandardKernel();
this.kernel.Bind<IAppViewModel>().To<AppViewModel>();
}
}
並在App.xaml中
<Application x:Class="CBMExample.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:CBMExample"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:CbmBootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
我是WPF和Ninject的新手。 你能告訴我我要改變什么,以便在應用程序啟動時,帶有相應ViewModel(AppViewModel)的View(AppView)被加載嗎?
您是否知道有關使用和設置Ninject與Caliburn Micro的最新教程?
您還需要重寫OnStartup
以顯示您的根視圖/ viewmodel:
protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
{
DisplayRootViewFor<IAppViewModel>();
}
此額外調用替換了先前的通用引導程序,並允許您在運行時為應用程序選擇根視圖。
您還需要覆蓋GetInstance
以使Caliburn掛鈎到Ninject:
protected override object GetInstance(Type serviceType, string key)
{
return container.Get(serviceType);
}
無論什么時候需要構建一些東西,Caliburn.Micro都會調用它,所以這是一個注入Ninject( 其他IoC容器可用! )的一站式服務。
至於最新的教程; 自Caliburn以來沒有那么多.Micro轉到版本2,但是他們的官方文檔通常非常有用。
編輯:你還有一件事要做! 確保您的引導程序構造函數調用Initialize
:
public CbmBootstrapper ()
{
Initialize();
}
這將使Caliburn.Micro付諸行動......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.