Caliburn.Micro HelloWindowManager示例 - 查看位置不起作用

时间:2014-08-26 10:40:39

标签: c# wpf mvvm mef caliburn.micro

HelloWindowManager Caliburn.Micro示例演示如何将窗口(视图)显示为模态,无模式或弹出,并且工作得很好。但是它在项目根目录中有视图和视图模型,所以我想整理它并让它使用视图和视图模型位置的默认约定,所以我做了以下更改:

  1. 创建了一个Views文件夹,并在其中移动了ShellView.xaml和DialogView.xaml
  2. 创建了一个ViewModels文件夹并移动了匹配的View Models
  3. 调整4个文件中的命名空间以反映移动
  4. 现在运行修改后的示例我有一种奇怪的行为,即“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吗?

1 个答案:

答案 0 :(得分:0)

非常确定我的评论是答案......

在views文件夹中你将需要一个名为Dialog的文件夹,你将把Modeless.xaml和Popup.xaml分别放在其中,例如“.Views.Dialog.Modeless”作为它们的命名空间。它是一个viewlocator演习,即使我已经多次战斗。 :/

注意:这只是在没有文件夹的情况下直接放入命名空间的语义,但是从项目的组织结构中可以更好地理解它。