NavigationService.Navigate выдает исключение при вызове в Prism для UWP
Я использую Prism для UWP, и я классифицировал свое приложение из PrismUnityApplication. Я переопределил OnLaunchApplicationAsync, и я пытаюсь позвонить,
NavigationService.Navigate("HighlightsView", null);
При вызове программа выдает исключение,
{"The page name HighlightsView does not have an associated type in namespace Panda.UWP.Views\r\nParameter name: pageToken"}
У меня есть папка с именем Views, и у меня есть представление с именем HighlightsView в пространстве имен Panda.UWP.Views.
Есть ли здесь соглашение об именах? Потому что, если я переименую свой вид из HighlightsView в HighlightsPage, то все будет работать нормально!
2 ответа
Есть ли здесь соглашение об именах?
Короткий ответ: да. Prism для среды выполнения Windows указывает ViewModelLocator
объект, который может использоваться для управления созданием моделей представлений и их ассоциаций с представлениями. Преимущество этого подхода состоит в том, что существует один класс, отвечающий за создание экземпляров модели представления.
ViewModelLocator
класс использует прикрепленное свойство, AutoWireViewModel
, чтобы связать модели представления с представлениями, если для этого свойства установлено значение True. Для получения более подробной информации о соглашении, пожалуйста, обратитесь к техническому блогу Дейва:
Модели представлений находятся в той же сборке, что и типы представлений.
Представления находятся в дочернем пространстве имен.Views.
Просмотр имен заканчивается "Страница".
Модели представлений находятся в дочернем пространстве имен.ViewModels.
Названия моделей представлений соответствуют именам представлений и заканчиваются "ViewModel".
Блог также содержит информацию о том, как переопределить соглашения Prism по умолчанию, на которые вы можете ссылаться. Блог Брайана также описывает похожие вещи о соглашении и о том, как его изменить.
Простое решение - переименовать HighlightsView.xaml в HighlightsViewPage.xaml