Ich arbeite in einem Projekt, wo ich zwei Abschnitte in der Shell deklariert habe; Eine davon wird verwendet, um ein Menü zu platzieren, dessen Elemente Module bei Bedarf laden, und das andere wird verwendet, um die Ansichten der angeforderten Module zu laden.Prism v4/MVVM (Unity/WPF) - Laden Sie Module in die gleiche Region
Dies ist ein Beispiel für die Shell-Design
<StackPanel Orientation="Vertical" Grid.Column="0" Grid.Row="1">
<Button Content="Home" Height="23" Name="Home" Width="75"/>
<Button Content="Users" Height="23" Name="Users" Width="75"/>
</StackPanel>
<Border Grid.Column="1" Grid.Row="1" Background="WhiteSmoke">
<ContentControl cal:RegionManager.RegionName="MainRegion" Name="MainRegion"/>
</Border>
Wie Sie die „Menu“ sehen durch Taste Serie besteht (dies ist nur für Test) und einem Contentcontrol, die wie eine Region arbeitet, wo ich um die Ansichten zu laden.
Dies ist ein Beispiel dafür, wie sich die Module in meinem Bootstraper hinzugefügt:
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
System.Type homeModule = typeof(FieldCollection.Home.HomeModule);
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(new ModuleInfo() { ModuleName = homeModule.Name, ModuleType = homeModule.AssemblyQualifiedName, InitializationMode = InitializationMode.OnDemand });
System.Type userModule = typeof(FieldCollection.User.UserModule);
moduleCatalog.AddModule(new ModuleInfo() { ModuleName = userModule.Name, ModuleType = userModule.AssemblyQualifiedName, InitializationMode = InitializationMode.OnDemand });
}
Dies ist die Initialize-Methode der Module:
public void Initialize()
{
this.container.RegisterType<IUserController, UserController>(new ContainerControlledLifetimeManager());
this.regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.UserSummaryView));
}
Und SCHLIESSLICH das ist, wie das Modul genannt wird von der Speisekarte.
Das Problem ist, dass nur die erste aufgerufene Ansicht in der Region angezeigt wird. Ich bin mit Prism 4 und Unity wie Dependency Injection Container
Danke für Ihre Hilfe
Ok, aber wenn ich ItemsControl verwende, werden alle Module in der gleichen Region angezeigt, ich möchte nur ein Modul gleichzeitig anzeigen. Vielen Dank für Ihre Antwort – mascab
@mascab Ok halten Sie das ContentControl dann und überprüfen Sie die oben genannten Details ... –