#prism #.net-core-3.1 #wpf-core
#prism #.net-core-3.1 #wpf-ядро
Вопрос:
Я создаю приложение WPF Core 3.1 с использованием Prism 7. В одном из представлений я пытаюсь зарегистрировать модель представления для навигации PRISM через:
containerRegistry.RegisterForNavigation<ViewA, ViewAViewModel>();
И при необходимости я делаю запрос в службу навигации PRISM для перехода к представлению с помощью Region Manager
_regionManager.RequestNavigate(RegionNames.ContentRegion, "ViewA");
Навигация к представлению завершена, и я могу видеть представление в определенной области, но модель представления не назначена представлению.
Я попытался вручную зарегистрировать модель представления с помощью ViewModelLocationProvider, но модель представления по-прежнему не назначена.
ViewModelLocationProvider.Register<ViewA, ViewAViewModel>();
Но если я использую свойство автоматической настройки PRISM в представлении, тогда модель представления обнаруживается и присваивается представлению.
prism:ViewModelLocator.AutoWireViewModel="True"
Просмотр класса модели, объявленного с помощью интерфейса IConfirmNavigationRequest, необходимого для обработки запросов навигации
public class ViewAViewModel : RegionViewModelBase , IConfirmNavigationRequest
Я не могу понять, чего мне здесь не хватает.
Ответ №1:
Единственное, что я вижу неправильно, это то, что вам нужно будет использовать интерфейс INavigationAware
, а не IConfirmNavigationRequest
. Я предполагаю RegionViewModelBase
BindableBase
, что это уже реализовано.
public class ViewAViewModel : RegionViewModelBase, INavigationAware
Комментарии:
1. IConfirmNavigationRequest реализует интерфейс INavigationAware.
2. @Bluecomb Я просто следил за тем, что Брайан Лагунас дает в своих руководствах. Обычно, когда что-то не работает, я сводлю это к «базовой» форме, проверяю, работает ли это, а затем начинаю изменять до такой степени, что это больше не работает, и пытаюсь выяснить, почему. Как я уже упоминал, я не понимаю, почему код не будет работать, если вы все сделали правильно. Извините, я не смог больше помочь.