2013-06-09 3 views
1

Я создаю оболочку. XAML, в котором находится только TabControl. Я пытаюсь создать новые вкладки в событии нажатия кнопки. С кодом, который я написал до сих пор, я могу создавать новые вкладки в событии с нажатием кнопки, но содержимое вкладки (региона) отображается только на вкладке FIRST, а созданные новые вкладки пустые. То есть Я не могу показать то же содержание (область) во вновь созданных закладок ...TabControl с областями PRISM

Shell.XAML

<TabControl Name="MyTabs" 
      Prism:RegionManager.RegionName="{x:Static inf:RegionConstants.MainRegion}"> 
</TabControl> 

UserControl, что я хотел бы добавить в закладки:

MainControls.XAML

<UserControl> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 

     <Grid x:Name="LeftGrid" Grid.Row="0" Grid.Column="0" Prism:RegionManager.RegionName="{x:Static inf:RegionConstants.InputRegion}"> 

     <GridSplitter> 
     <Grid x:Name="RightGrid" Grid.Row="0" Grid.Column="0" Prism:RegionManager.RegionName="{x:Static inf:RegionConstants.OutputRegion}"> 
    </Grid> 
</UserControl> 

Функция Добавить вкладку

private void New_Tab(object sender, RoutedEventArgs e) 
{ 
    TabItem tab = new TabItem(); 
    tab.Header = "New Tab"; 
    tab.Content = new MainControls(); 
    MyTabs.Items.Add(tab); 
} 

Модуль для регистрации MainRegion

class CollaboratedModule :IModule 
{ 
    private IUnityContainer container = default(IUnityContainer); 
    private IRegionManager regionManager = default(IRegionManager); 

    public CollaboratedModule(IUnityContainer container, IRegionManager regionManager) 
    { 
     this.container = container; 
     this.regionManager = regionManager; 
    } 

    public void Initialize() 
    { 
     if (this.container != default(IUnityContainer) && 
      this.regionManager != default(IRegionManager)) 
     { 
      var IntergratedView = this.container.Resolve<MainControls>(); 

      this.regionManager.AddToRegion(RegionConstants.MainRegion, IntergratedView); 
      this.regionManager.Regions[RegionConstants.MainRegion].Activate(IntergratedView); 
     } 
    } 
} 

Точно так же я создал модуль для регистрации InputRegion и OutputRegion. Может ли кто-нибудь сообщить мне, где проблема в этом коде и как я могу ее решить?

ответ

0

просто попробовать этот способ

regionManager.RegisterViewWithRegion(RegionConstants.MainRegion,() => IntergratedView); 
Смежные вопросы