Я считаю, что вы должны зарегистрировать представление с регионом при инициализации. попробуйте следующий код
public class Bootstrapper : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
_regionManager.RegisterViewWithRegion("RegionName", typeof(View));
_regionManager.RegisterViewWithRegion("RegionName", typeof(View2));
}
}
Теперь вы можете использовать
_regionManager.RequestNavigate("RegionName", "View");
Или
_regionManager.RequestNavigate("RegionName", "View2");
Обновление
Еслимы используем призму, тогда с ней должна быть связана структура внедрения зависимостей, например MEF
или Unity
для моего проекта. Я использую Prism.Unity.Wpf
, если вы используете Unity
, тогда вы можете попросить вашего инжектора зависимости внедрить RegionManager с помощьюдобавление конструктора, который будет вставлен с помощью IRegionManager
, см. ниже
readonly IRegionManager _regionManager;
public Bootstrapper(IRegionManager regionManager)
{
_regionManager = regionManager;
}
Когда вы вводите IRegionManager
в конструктор Unity
, вы знаете, что все время предоставляете один и тот же экземпляр, поскольку он поддерживается в Unity
так что не нужно беспокоиться об использовании того же экземпляра IRegionManager
в другом месте.
когда мы используем prism:RegionManager.RegionName="ContentRegion"
в XAML, мы фактически держим заполнитель, чтобы сказать Prism
, что существует область, которая будет заполнена любым VIEW
в какой-то момент, ищите его.
Это мое понимание. Дайте мне знать, если вы найдете это полезным. Спасибо.