Образец Caliburn.Micro HelloWindowManager - Просмотр местоположения не работает
Пример HelloWindowManager Caliburn.Micro демонстрирует отображение Window (View) как модального, немодального или всплывающего окна и работает просто отлично. Однако у него есть представления и Viewmodels в корне проекта, поэтому я хотел привести его в порядок и использовать соглашение по умолчанию для просмотра и просмотра местоположения модели, поэтому я сделал следующие изменения:
- Создал папку Views и переместил в нее и ShellView.xaml, и DialogView.xaml.
- Создал папку ViewModels и переместил соответствующие View Models
- Скорректировано пространство имен в 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, с которой даже я боролся много раз.:/
Примечание. Это просто семантика, которую вы можете поместить в пространство имен непосредственно без папки, но из организационной структуры проекта это помогает лучше понять ее.