Образец Caliburn.Micro HelloWindowManager - Просмотр местоположения не работает

Пример HelloWindowManager Caliburn.Micro демонстрирует отображение Window (View) как модального, немодального или всплывающего окна и работает просто отлично. Однако у него есть представления и Viewmodels в корне проекта, поэтому я хотел привести его в порядок и использовать соглашение по умолчанию для просмотра и просмотра местоположения модели, поэтому я сделал следующие изменения:

  1. Создал папку Views и переместил в нее и ShellView.xaml, и DialogView.xaml.
  2. Создал папку ViewModels и переместил соответствующие View Models
  3. Скорректировано пространство имен в 4 файлах, чтобы отразить движение

При запуске пересмотренного образца теперь у меня есть странное поведение, что, хотя кнопка "Открыть модал" работает отлично, демонстрируя, что может быть найден вид для ВМ, кнопки "Открыть без режима" и "Открыть всплывающее окно" приводят к сообщению "Не удается найти Представление для caliburn.Micro.HelloWindowmanager.ViewModels.DialogViewModel "

Есть идеи?

Отредактировано, чтобы добавить:

В отсутствие каких-либо ответов от кого-либо я изменил образец, чтобы использовать SimpleContainer вместо MEF - и он отображает точно такое же поведение, как и выше.

Например, этот вызов работает:
var result = windowManager.ShowDialog(new DialogViewModel());

но эти два вызова приводят к сообщению об ошибке "Не удается найти представление..."

windowManager.ShowWindow(new DialogViewModel(), "Modeless");

windowManager.ShowPopup(new DialogViewModel(), "Popup", settings);

Должен ли я как-то добавить DialogViewModel в SimpleContainer?

1 ответ

Решение

Уверен, мой комментарий является ответом...

в папке views вам всем понадобится папка с именем Dialog, в которую вы поместите Modeless.xaml и Popup.xaml, для которых необходимо, например, указать ".Views.Dialog.Modeless" в качестве пространства имен соответственно. Это дрель Viewlocator, с которой даже я боролся много раз.:/

Примечание. Это просто семантика, которую вы можете поместить в пространство имен непосредственно без папки, но из организационной структуры проекта это помогает лучше понять ее.

Другие вопросы по тегам