Изменить вид в регионе с помощью Prism, WPF - PullRequest
0 голосов
/ 13 июня 2018

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

        public MainWindowViewModel(IEventAggregator eventAggregator,IRegionManager regionManager, IUnityContainer container)
    {
        _regionManager = regionManager;

        NavigateCommand = new DelegateCommand<string>(Navigate);
        eventAggregator.GetEvent<UpdatedEvent>().Subscribe(Updated);
        eventAggregator.GetEvent<MapCenterChnagedEvent>().Subscribe(MapCenterChnagedEventHandler);

        eventAggregator.GetEvent<AssetSelectedEvent>().Subscribe(AssetSelectedEventHandler);
        _regionManager.RegisterViewWithRegion("ContentRegion", typeof(Views.GeoAssets));
        _regionManager.RegisterViewWithRegion("ContentRegionAsset", typeof(Views.AssetDetails));
        _regionManager.RegisterViewWithRegion("ContentRegionAsset", typeof(Views.Logs));
        _regionManager.RegisterViewWithRegion("ContentRegionAsset", typeof(Views.Keys));

        object view = container.Resolve<Views.Logs>();
        object view2 = container.Resolve<Views.Keys>();


        IRegion region = _regionManager.Regions["ContentRegionAsset"]; //get error , _regionManager has no regions defined
        region.Activate(view); trying to make view logs the active view

    }

VIEW XAML

1 Ответ

0 голосов
/ 13 июня 2018

Модель вида не выглядит хорошим местом для регистрации видов.Я бы предпочел перейти туда, потому что модель представления может создаваться несколько раз, а регистрация представления - это скорее одноразовая вещь.

Примечания:

  • инъекция контейнера - этозло - вместо этого вставьте фабрику
  • , если вы хотите показать объект, не создавайте представление в модели представления - вместо этого создайте модель представления
  • не используйте поле вконструктор, если вы можете использовать параметр (потому что в противном случае вы не получите уведомление, если позже сможете удалить поле во время рефакторинга)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...