0
がこれよりもそれを行うための良い方法はあります?:Caliburn.Microを使用したナビゲーションのコンストラクタDI可能?
ActivateItem(Ioc.Get<PageOneViewModel>());
私はサービスロケータパターンの大ファンではないんです。そのようなナビゲーションに利用できる他のDIフックはありますか?
がこれよりもそれを行うための良い方法はあります?:Caliburn.Microを使用したナビゲーションのコンストラクタDI可能?
ActivateItem(Ioc.Get<PageOneViewModel>());
私はサービスロケータパターンの大ファンではないんです。そのようなナビゲーションに利用できる他のDIフックはありますか?
PageOneViewModel
を指揮者の依存関係にすることができます(コンダクターがコンテナで解決されていることを前提とします)。
container = new SimpleContainer();
//...
container
.PerRequest<MyViewModel>()
.PerRequest<PageOneViewModel()>;
をそして、あなたの導体中:アプリのブートストラップで
、PageOneViewModel
を登録し、私はここにSimpleContainer
(カリバーンマイクロに付属しているもの)を使用しています
public MyViewModel : Conductor
{
// require PageOneViewModel as a dependency
public MyViewModel(PageOneViewModel pageOne)
{
PageOne = pageOne;
}
PageOneViewModel PageOne { get; set; }
public override void OnActivate()
{
base.OnActivate();
ActivateItem(PageOne);
}
}
注意を。それは他のDIコンテナで動作するはずです。
ありがとうDoom5。それは良い解決策のように見えます。私の指揮者が膨大な数の意見を執行していると少し重くなるかもしれません。それらをすべて前に積み重ねる。しかし、私はそれがトレードオフだと思う。いずれにしても、Caliburn.MicroにActivateItemに注入するDIフックがあったとしても、バックグラウンドでサービスロケーションを実行するのが最も好きです。私はMark Seemannがおそらくこの問題について強い見解を持っていると確信しています:) – onefootswill