我怎么做卡尔伯恩.请使用我的多参数构造函数
本文关键字:我的 请使用 参数 构造函数 | 更新日期: 2023-09-27 18:01:48
当我有一个带有ImportingConstructor(接受一个参数)的View Model设置时,将调用构造函数并正确显示屏幕。例子:
[ImportingConstructor]
public ShellViewModel(IEventAggregator events)
{
events.Subscribe(this);
}
然而,基于Caliburn的例子。微,似乎我应该能够提供一个不同的构造函数与N个参数。例子:
[ImportingConstructor]
public ShellViewModel(LeftViewModel left, RightViewModel right, IEventAggregator events)
{
Left = left;
Right = right;
events.Subscribe(this);
}
但是这个版本的构造函数在我的沙盒中从未被调用过。我已经编译和运行的样本代码从Caliburn。Micro就是这样做的;调用多参数构造函数。(见这份原稿。微样例项目"HelloEventAggregator")
确实-当我运行我的沙盒代码(第二个版本)的构造函数没有被调用,和一个不同的ViewModel被选择作为初始显示。但是在HelloEventAggregator示例中,它们的shellview模型首先被构造并显示。
我需要做什么才能得到Caliburn。微调用我的多参数构造函数,并显示正确的视图?
问题出现了,因为我有多个视图模型集
[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);
...
}
...
}