2011-07-12 30 views
0

當我有一個視圖模型的設置與帶有一個參數的ImportingConstructor,調用構造函數和屏幕顯示正確。例如:如何讓Calburn.Micro使用我的多參數構造函數?

[ImportingConstructor] 
    public ShellViewModel(IEventAggregator events) 
    { 
     events.Subscribe(this); 
    } 

然而,基於來自Caliburn.Micro例子,看來我應該能夠提供不同的構造具有N個參數。例如:

[ImportingConstructor] 
    public ShellViewModel(LeftViewModel left, RightViewModel right, IEventAggregator events) 
    { 
     Left = left; 
     Right = right; 

     events.Subscribe(this); 
    } 

但是這個版本的構造函數永遠不會在我的沙箱中調用。我已經編譯並運行了Caliburn.Micro的示例代碼,它完成了這件事;調用一個多參數構造函數。 (請參閱Caliburn.Micro示例項目「HelloEventAggregator」)

確實 - 當我運行我的沙箱代碼(第二個版本)時,不調用構造函數,並選擇不同的ViewModel作爲初始顯示。但是在HelloEventAggregator示例中,他們的shellview模型首先被構造和顯示。

什麼我需要做的就是Caliburn.Micro叫我多參數的構造函數,並顯示正確的看法?

+0

找到了答案,只是在等待計時器到期後它... – EtherDragon

回答

1

問題arrised,因爲我有一個以上的視圖模型與

[Export(typeof(IShell))] 

出口類型設置應該是無論你的[ImportingConstructor]期待,對於合同得到滿足。

示例 - ShellViewModel

[Export(typeof(IShell))] 
public class ShellViewModel : PropertyChangedBase, IShell 
{ 
    [ImportingConstructor] 
    public ShellViewModel(LeftViewModel leftModel) 
    { 
     ... 
    } 
    ... 
} 

示例 - LeftViewModel

[Export(typeof(LeftViewModel))] 
public class LeftViewModel : PropertyChangedBase, IShell 
{ 
    [ImportingConstructor] 
    public LeftViewModel(IEventAggregator events) 
    { 
     events.Subscribe(this); 
     ... 
    } 
    ... 
} 
相關問題