2011-07-12 41 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); 
     ... 
    } 
    ... 
} 
相关问题