Je travaille dans un projet où j'ai déclaré deux sections dans le shell; l'un d'eux est utilisé pour placer un menu dont les éléments chargeront les modules à la demande et l'autre sera utilisé pour charger les Vues des modules demandés.Prism v4/MVVM (Unity/WPF) - Charger des modules dans la même région
Voici un exemple de la conception Shell
<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>
Comme vous pouvez le voir le « Menu » est composé par série de bouton (ce qui est seulement pour le test) et un ContentControl qui fonctionne comme une région où j'ai besoin charger les vues.
Voici un exemple de la façon dont on ajoute les modules dans mon Bootstraper:
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 });
}
Ceci est la méthode Initialize des modules:
public void Initialize()
{
this.container.RegisterType<IUserController, UserController>(new ContainerControlledLifetimeManager());
this.regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.UserSummaryView));
}
Et finallly voici comment le module est appelé à partir du menu.
private void User_Click(object sender, RoutedEventArgs e)
{
moduleManager.LoadModule("UserModule");
}
Le problème est que seule la première vue appelée est affichée dans la région. J'utilise Prism 4 et l'unité comme la dépendance conteneur d'injection
Merci pour votre aide
Ok mais quand j'utilise ItemsControl tous les modules sont affichés dans la même région, je veux qu'un seul module soit affiché à la fois. Merci pour votre réponse – mascab
@mascab Ok, gardez le ContentControl et vérifiez les détails ci-dessus ... –