2016-08-10 26 views

回答

1

您可以讓PageOneViewModel成爲您的售票員的依賴關係(假設您的售票員正在通過容器解決)。

在你的應用程序引導程序,註冊PageOneViewModel

container = new SimpleContainer(); 
//... 
container 
    .PerRequest<MyViewModel>() 
    .PerRequest<PageOneViewModel()>; 

而在你的指揮:

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); 
    } 
} 

請注意,我用的SimpleContainer這裏(附帶微卡利的一個)。它應該與其他DI容器一起工作。

+0

感謝Doom5。這看起來是一個好的解決方案。如果我的指揮官正在進行大量的觀看,它可能會有點沉重。預先加載它們。但我想這是權衡。無論如何,即使Caliburn.Micro確實有一個用於注入ActivateItem的DI鉤子,它最希望在後臺執行服務位置。我確信Mark Seemann可能對此事有強烈的看法:) – onefootswill

相關問題