HelloWindowManager Caliburn.Micro示例演示如何将窗口(视图)显示为模态,无模式或弹出,并且工作得很好。但是它在项目根目录中有视图和视图模型,所以我想整理它并让它使用视图和视图模型位置的默认约定,所以我做了以下更改:
现在运行修改后的示例我有一种奇怪的行为,即“Open Modal”按钮完美运行,从而证明可以找到VM的视图,Open Modeless和Open Popup按钮都会产生消息“无法找到适用于caliburn.Micro.HelloWindowmanager.ViewModels.DialogViewModel的视图”
有什么想法吗?
编辑添加:
没有任何人的回答,我修改了示例以使用SimpleContainer而不是MEF - 它显示与上面完全相同的行为。
e.g。此通话有效:
var result = windowManager.ShowDialog(new DialogViewModel());
但是这两个调用会导致'找不到视图...'错误消息
windowManager.ShowWindow(new DialogViewModel(), "Modeless");
windowManager.ShowPopup(new DialogViewModel(), "Popup", settings);
我应该以某种方式将DialogViewModel添加到SimpleContainer吗?
答案 0 :(得分:0)
非常确定我的评论是答案......
在views文件夹中你将需要一个名为Dialog的文件夹,你将把Modeless.xaml和Popup.xaml分别放在其中,例如“.Views.Dialog.Modeless”作为它们的命名空间。它是一个viewlocator演习,即使我已经多次战斗。 :/
注意:这只是在没有文件夹的情况下直接放入命名空间的语义,但是从项目的组织结构中可以更好地理解它。