I'm starting to develop a Prism 6 WPF application for switching windows in MSVS 2015 Professional (Russified). Below is my solution (I apologize for the bag in Russian in my MSVS):

The following is an example Bootstrepper of my application:
class Bootstrapper : UnityBootstrapper { protected override DependencyObject CreateShell() { return Container.Resolve<MainWindow>(); } protected override void InitializeShell() { Application.Current.MainWindow.Show(); } }
Both of my modules must be loaded with the application, and each of them has a folder "Model in models", "View in the folder" Views "and" View model "in the folder" ViewModels ". (In accordance with the technical specifications, my application should have up to 20-22 of such modules.) The application user will view these views using radio objects in MainWindow MainNavigationRegion. Below is MainWindow XAML (without radio blocks):
<Window x:Class="FlowmeterConfigurator.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:prism="http://prismlibrary.com/" prism:ViewModelLocator.AutoWireViewModel="True" Title="{Binding Title}" Height="350" Width="525"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Border Grid.Column="0" Grid.Row="2" Background="LightGray" MinWidth="250" Margin="5,0,0,5"> <ItemsControl x:Name="NavigationItemsControl" prism:RegionManager.RegionName="MainNavigationRegion" Grid.Column="0" Margin="5" Padding="5" /> </Border> <ContentControl prism:RegionManager.RegionName="MainContentRegion" Grid.Column="1" Grid.Row="2" Margin="5,0,5,5" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/> </Grid> </Window>
I start in Prism, and my problem is: how do I register my two modules (AuthorizationModule and CalibrationModule) in the Bootstrepper class? Should I create my own class that implements IModuleCatalog? For example, AggregateModuleCatalog: IModuleCatalog {...} and enter the following code into Bootstrepper:
protected override IModuleCatalog CreateModuleCatalog() { return new AggregateModuleCatalog(); }
Or use Prism.Modularity.ConfigurationModuleCatalog and put the following code in Bootstrepper:
protected override IModuleCatalog CreateModuleCatalog() { return new ConfigurationModuleCatalog(); }
Now: Do I have to define the ConfigureModuleCatalog method in Bootstrepper to show how each module is defined, loaded, and initialized? Like this:
protected override void ConfigureModuleCatalog() { // Module "Authorisation" is defined in the code. Type moduleAuthType = typeof(AuthorizationModule); ModuleCatalog.AddModule(new ModuleInfo(moduleAuthType.Name, moduleAuthType.AssemblyQualifiedName)); // Module "Calibration" is defined in the code: Type moduleCalibrType = typeof(CalibrationModule); ModuleCatalog.AddModule(new ModuleInfo(moduleCalibrType.Name, moduleCalibrType.AssemblyQualifiedName)); }
And the last: should I configure UnityContainer and how? For instance:
protected override void ConfigureContainer() { base.ConfigureContainer(); . . . . .
I read the following materials: 1) Switching navigation using the QuickStart browser using Prism Library 5.0 for WPF. 2) QuickStarts modularity using Prism Library 5.0 for WPF. 3) Navigation using Prism Library 5.0 for WPF. 4) Modular application development using Prism Library 5.0 for WPF. But because of my first acquaintance with Prisms, I, as a beginner, can not navigate in the right direction and ask for help. Therefore, my question is: How do I register in my application?