bonjour, je rencontre le problème suivant avec Silverlight / MVVM:
J'ai un shell avec 2 régions: MainRegion et DetailRegion
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
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
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 :
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
Partager