2011-07-20 11 views
0

MVVMLightのViewModelLocatorには私のMainViewModelが含まれています。MVVMLight ViewModelLocatorへの依存性注入

私は他のシングルトンクラスResourceLoggerを持っています。

ResourceLoggerを使用してApp.xaml.csに作成されます。

var resourceLogger = kernel.Get<ResourceLogger>(); 

MainViewModelResourceLoggerに依存します。

私は次のような問題がMainViewModelResourceLoggerを注入過ごしています:

[Inject] 
public MainViewModel(ResourceLogger resourceLogger) { ... } 

問題は、それが2つのResourceLoggerのクラスを作成することです。次のように

NinjectModuleに見えます:

Bind<ResourceLogger>().ToSelf().InSingletonScope(); 
Bind<MainViewModel>().ToSelf().InSingletonScope(); 

はApp.xaml.csとViewModelLocator間のカーネルを共有するためのいくつかの方法はありますか?

この問題を解決するにはどうすればよいですか?

答えて

0

最も簡単な方法は、カーネルのpublic static class /変数を作成し、それをすべての登録とGet()の呼び出しに使用することです。

他にも、システム全体でkernel.Get()を1回だけ呼び出すこと(またはできるだけ呼び出しを少なくする)が必要です。