В Prism вы обычно делаете вкладку управляющей областью, чтобы вам не приходилось управлять связанными коллекциями страниц вкладок.
<TabControl
x:Name="MainRegionHost"
Regions:RegionManager.RegionName="MainRegion"
/>
Теперь представления можно добавлять, регистрируя себя вРегион MainRegion:
RegionManager.RegisterViewWithRegion( "MainRegion",
( ) => Container.Resolve<IMyViewModel>( ).View );
И здесь вы можете увидеть специальность Prism.Вид создается экземпляром ViewModel.В моем случае я разрешаю ViewModel через контейнер Инверсии Контроля (например, Unity или MEF).ViewModel получает представление, внедренное посредством инжектора конструктора, и устанавливает себя в качестве контекста данных представления.
Альтернативой является регистрация типа представления в контроллере региона:
RegionManager.RegisterViewWithRegion( "MainRegion", typeof( MyView ) );
Использование этого подхода позволяетВы должны создать представления позже во время выполнения, например, контроллером:
IRegion region = this._regionManager.Regions["MainRegion"];
object mainView = region.GetView( MainViewName );
if ( mainView == null )
{
var view = _container.ResolveSessionRelatedView<MainView>( );
region.Add( view, MainViewName );
}
Поскольку вы зарегистрировали тип представления, представление помещается в правильную область.