2016-08-10 10 views

答えて

1

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コンテナで動作するはずです。

+0

ありがとうDoom5。それは良い解決策のように見えます。私の指揮者が膨大な数の意見を執行していると少し重くなるかもしれません。それらをすべて前に積み重ねる。しかし、私はそれがトレードオフだと思う。いずれにしても、Caliburn.MicroにActivateItemに注入するDIフックがあったとしても、バックグラウンドでサービスロケーションを実行するのが最も好きです。私はMark Seemannがおそらくこの問題について強い見解を持っていると確信しています:) – onefootswill

関連する問題