Я считаю, что ваша ошибка связана с
region.Activate(_container.Resolve<StatusBarView>());
а не
var region = _regionManager.Regions[.RegionNames.StatusBarRegion];
Есть несколько причин, почему это может быть вашей проблемой, и я дам вам решения, которые вы можете попробовать.
Во-первых, , region.Activate()
требует, чтобы экземпляр представления уже существовал в этом регионе. Так что из вашего кода я подозреваю, что _container.Resolve<StatusBarView>()
дает вам новый экземпляр StatusBarView
и, следовательно, не будет существовать в этом регионе.
Решение: при регистрации StatusBarView
в контейнере рассмотрите одноэлементное представление.
_container.RegisterType<IStatusBarView,StatusBarView>
(new ContainerControlledLifetimeManager())
Во-вторых , вы должны зарегистрировать тип вида (или добавить его вручную) в регион, прежде чем активировать его.
Решение:
_regionManager.RegisterViewWithRegion
(RegionNames.StatusBarRegion, typeof(IStatusBarView));
В качестве альтернативы:
_regionManager.Regions[RegionNames.StatusBarRegion]
.Add(_container.Resolve<StatusBarView>());