bonjour, je rencontre le problème suivant avec Silverlight / MVVM:

J'ai un shell avec 2 régions: MainRegion et DetailRegion

Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<ItemsControl x:Name="MainRegion" Regions:RegionManager.RegionName="MainRegion" Background="AliceBlue">
</ItemsControl>
<ItemsControl x:Name="DetailRegion" Regions:RegionManager.RegionName="DetailRegion" Background="Azure">
</ItemsControl>

J'ai 2 module, ModuleA et ModuleB chargé dans le catalog

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ModuleCatalog catalog = new ModuleCatalog();
catalog.AddModule(typeof(ModuleA.ModuleA));
catalog.AddModule(typeof(ModuleB.ModuleB));

La fonction Initialize() du moduleA registre le ModuleAview à la MainRegion

Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
void IModule.Initialize()
{
   _container.RegisterType<ICompanyService, CompanyService>();
   _regionManager.RegisterViewWithRegion("MainRegion", typeof(ModuleAView));
}

Ce ModuleAView presente une liste de Data bindé au ModuleAViewModel
Le SelectedItem de cette liste est bindé avec une propiété SelectedItem du ModuleAViewModel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SelectedItem="{Binding SelectedCompany}
Dés qu'une valeur dela liste est sélectionnée, la propriété “SelectedCompany” est sollicitée, ca marche.

La question est la suivante:

Je voudrais visualiser le détail de l'élément sélectionné dans une autre vue posée dans la région DetailRegion
Mais le problème est que le ModuleAViewModel n'a pas de référence vers le RegionManager en charge
de registrer la vue Détail dans la DetailRegion

Comment peut-on faire ?

Dans le CompositeapplicationGuidance / ViewDiscoverycomposition ils passent par un Controller, une sorte
de super Class qui a les référence de RegionManager et qui peut ainsi piloter cette action.

Est-ce la seule solution que l'on a, une fois que l'on se trouve dans le code du ViewModel ModuleAViewModel ?

Merci