0

我使用 Caliburn.Micro 作为 WPF 框架,我的应用程序或多或少地模拟了 CM doco 中的示例代码。我使用 Castle.Windsor 作为 IoC 容器。

我的 ShellViewModel 有一个相应的视图,它在选项卡控件中显示“子”视图。一切都很好,但不知何故,我现在设法让它开始激活它不应该激活的特定视图模型。

我明确要求ActivateItem(SomeViewModel)ShellViewModel打开 3 个标签。这可以。但是 CM 会自动激活第四个 ViewModel(我们称之为NotYetViewModel),我并没有要求它这样做。

堆栈跟踪似乎表明这是因为 Castle.Windsor 正在Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(...)使用此 ViewModel 类型调用 a ,这具有在不应该加载和显示视图时的副作用。

NotYetViewModel不是我想要激活的任何 ViewModel 的依赖项也没有以任何方式从ShellViewModel引导程序创建的 .这个虚拟机没有我明确要求它。

我唯一的其他线索是,如果我从中删除默认构造函数NotYetViewModel,则不会创建它(可能是因为 CM/Castle无法创建它),但没有报告此失败的错误,这表明 Castle 不认为这种类型是其他东西的必需依赖项。

关于我可以研究什么来解决这个问题的任何建议?

4

0 回答 0