Bonjour,

j'utilise (ou j'essaye!) d'utiliser la CAL. J'ai donc dans mon shell, 2 regions : Une pour afficher un menu, l'autre pour charger des applications dans un tabcontrol.
Lorsqu'un item du menus est selectionné, le module ModuleMenu déclenche un évenement (ici appelé SelectItemChapitreEvent),qui est receptionné par le module ModuleAppli.

Le problème est le suivant : le module ModuleMenu déclenche sans problème l'événement, mais le module ModuleAppli, ne le recoit pas forcement ... Par exemple si je rajoute des stackpanels, expander, ou bien si dans la region Appli je rajoute une un onglet statique chargeant une page Web, l'évenement est bien déclencher mais n'est pas forcément reçu.

J'ai donc : Mon boostrapper :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Public Class Bootstrapper
    Inherits Microsoft.Practices.Composite.UnityExtensions.UnityBootstrapper
 
 
    Protected Overrides Function CreateShell() As System.Windows.DependencyObject
        Dim M As New MainWindow
        M.Show()
        Return M
 
    End Function
 
 
    Protected Overrides Function GetModuleCatalog() As Microsoft.Practices.Composite.Modularity.IModuleCatalog
        Dim catalog As New Microsoft.Practices.Composite.Modularity.ModuleCatalog
        catalog.AddModule(GetType(ModuleAppli))
        catalog.AddModule(GetType(ModuleMenu))
        Return catalog
 
    End Function
End Class

et mes 2 modules

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
Public Class ModuleAppli
    Implements Microsoft.Practices.Composite.Modularity.IModule
 
    Private ReadOnly _regionManager As Microsoft.Practices.Composite.Regions.IRegionManager
    Private _eventAggregator As Microsoft.Practices.Composite.Events.IEventAggregator
    Private _RegionAppli As Microsoft.Practices.Composite.Regions.IRegion
 
 
    Public Sub Initialize() Implements Microsoft.Practices.Composite.Modularity.IModule.Initialize
 
        _RegionAppli = _regionManager.Regions("RgTabCtrl")
        _eventAggregator.GetEvent(Of SelectItemChapitreEvent)().Subscribe(AddressOf LoadApp)
 
    End Sub
 
    Public Sub New(ByVal regionManager As Microsoft.Practices.Composite.Regions.IRegionManager, ByVal eventAggregator As Microsoft.Practices.Composite.Events.IEventAggregator)
        _regionManager = regionManager
        _eventAggregator = eventAggregator
    End Sub
 
 
    Private Sub LoadApp(ByVal item As SousChapitre)
        ...Ajout de l'applicatoin dans la region 
 
    End Sub
	...
End Class
 
 
Public Class ModuleMenu
    Implements Microsoft.Practices.Composite.Modularity.IModule
    Private WithEvents uc As New UCMenu
    Private ReadOnly _regionManager As Microsoft.Practices.Composite.Regions.IRegionManager
    Private ReadOnly _eventAggregator As Microsoft.Practices.Composite.Events.IEventAggregator
 
    Public Sub Initialize() Implements Microsoft.Practices.Composite.Modularity.IModule.Initialize
 
        Dim RegionAppli As Microsoft.Practices.Composite.Regions.IRegion
        RegionAppli = _regionManager.Regions("RgMenu")
        RegionAppli.Add(uc)
        RegionAppli.Activate(uc)
 
    End Sub
 
    Public Sub New(ByVal regionManager As Microsoft.Practices.Composite.Regions.IRegionManager, ByVal eventAggregator As Microsoft.Practices.Composite.Events.IEventAggregator)
        _regionManager = regionManager
        _eventAggregator = eventAggregator
    End Sub
 
    Private Sub uc_ItemIsSelected(ByVal sender As SousChapitre) Handles uc.ItemIsSelected
        _eventAggregator.GetEvent(Of SelectItemChapitreEvent)().Publish(sender)
    End Sub
 
End Class
Serait-ce dû au garbage collector ? A une déinscription intempestif du module ModuleAppli (comment?) ? A la portée de l'événement ?

Merci de votre aide