У меня есть область TabControl в Shell.xaml:
<TabControl Name="TabRegionControl" prism:RegionManager.RegionName="TabRegion" />
Пользователь может нажать кнопку, чтобы открыть новую вкладку, которая вызывает:
RegionManager.RequestNavigate("TabRegion", new Uri("Search?X=1", UriKind.Relative));
Новая вкладкасоздается на вкладке управления и отображает вид.Представление содержит несколько подрегионов (и представление для каждого из этих регионов).Это работает до сих пор.Когда пользователь снова нажимает кнопку, я получаю сообщение об ошибке, в котором говорится, что регионы уже зарегистрированы.
Я знаю, что это происходит, потому что регионы не могут быть снова зарегистрированы в одном и том же диспетчере регионов.Я читал, что области действия могут быть использованы для решения этой проблемы.Как можно лучше понять, я заменяю RequestNavigate выше на это, чтобы создать RegionManager с областью видимости:
SearchViewModel svm = new SearchViewModel();
IRegion detailsRegion = _regionManager.Regions["TabRegion"];
SearchView view = new SearchView(svm);
IRegionManager scopedRegionManager = detailsRegion.Add(view, null, true);
svm.ScopedRegionManager = scopedRegionManager;
svm.LoadViews();
Я считаю, что мне нужно вручную загружать представления в мои подрегионы в методе LoadViews (),но субрегионы не отображаются.
Вот как они определены в Search.xaml:
<ContentControl Background="White" Grid.Row="0" Grid.Column="0"
Regions:RegionManager.RegionName="SubRegion1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch" />
В качестве отправной точки scopedRegionManager, похоже, не имеет ни одного из моих субрегионов в своей коллекции регионов.
edit
Теперь я вижу субрегионы в коллекции регионов менеджера областей с областью действия.Подвиды все еще не отображаются, вот как я пытаюсь загрузить подвиды внутри метода LoadViews, который может быть совершенно не в курсе:
ViewModelSub1 vm = new ViewModelSub1();
IRegion detailsRegion = _regionManager.Regions["RegionSub1"];
SubView1 sView = new SubView1(vm);
IRegionManager detailsRegionManager = detailsRegion.Add(sView, null, false);
detailsRegion.Activate(wsView);
Я новичок в WPF и MVVM.Любая помощь или указатели в правильном направлении будут с благодарностью, так как я совершенно потерян.
Спасибо.