J'expérimente avec Prism et ai créé une application simple consistant en une fenêtre principale avec une région de Prism, avec deux vues «d'enfant» (et VMs). Chacune de ces vues de l'enfant a un bouton, et en cliquant sur ce navigue simplement à l'autre point de vue, par exemple:Comment puis-je disposer d'une vue lorsque je navigue avec Prism?
_regionManager.RequestNavigate("MainWindowRegion", "HomeView");
Les vues de l'enfant et les modèles de vue de mettre en œuvre IDisposable
, et ont été donné une vie « transitoire » dans mon conteneur DI . En outre, les vues implémentent IRegionMemberLifetime
(KeepAlive = false).
Malgré tout cela, les vues ne sont pas disposées (jusqu'à ce que je ferme l'application). Qu'est-ce que je rate? Comment puis-je disposer d'une vue lorsque je m'en éloigne?
Ou serait-il plus simple d'enregistrer les vues enfant sous forme de singletons et de les initialiser chaque fois que je navigue vers elles?
Si je comprends bien, votre vrai problème est que lorsque vous naviguez vers une autre vue, l'ancienne vue prend toujours la mémoire? Avez-vous essayé d'appeler GC.Collect()? – jannagy02
@ jannagy02 Je viens d'essayer ceci (après les appels à 'RequestNavigate()') mais cela n'aboutit toujours pas à la suppression des vues. –