Dans mon application WPF, j'ai une View qui reçoit un ViewModel, et lorsque cette vue est affichée, elle ajoute des gestionnaires d'événements à l'événement PropertyChanged de ViewModel. Lorsque certaines actions se produisent dans l'interface graphique, je supprime la vue et ajoute une autre vue au conteneur de stockage - où ce nouveau est lié au même ViewModel. Après cela, l'ancienne vue continue de gérer les événements PropertyChanged dans ViewModel. Je suppose que cela se produit parce que la vue n'a pas encore été collectée par le récupérateur de place, et est donc en vie? Eh bien, j'en ai besoin pour arrêter. Mon hypothèse est que j'ai besoin de détacher manuellement le gestionnaire d'événements à partir du ViewModel? Y at-il une meilleure pratique sur la façon de gérer cela?Stratégie de désabonnement des gestionnaires d'événements
0
A
Répondre
2
Peut-être que l'abonnement à l'événement Unloaded de la vue et son détachement dans le gestionnaire d'événements Unloaded sont un peu plus propres, les utilisateurs ne devraient pas non plus appeler Dispose().
2
La stratégie que j'utilise consiste à rendre l'objet View IDposable et la fonction Dispose de la vue à désabonner les gestionnaires d'événements. Ensuite, la personne responsable de l'ajout de la vue doit d'abord appeler le Dispose()
sur l'ancienne vue. Fonctionne comme un charme, mais est-ce une utilisation valide d'IDisposable?
Questions connexes
- 1. Programme de désabonnement avec des scripts dans android
- 2. Énumération des gestionnaires d'événements
- 3. Suppression des gestionnaires d'événements
- 4. Stratégie de gestion des exceptions
- 5. C# .NET événement approprié abonnement et désabonnement
- 6. Stratégie de sortie de dépendance statique
- 7. Suppression des gestionnaires de l'élimination de l'objet
- 8. Des outils pour obtenir des métriques de désabonnement de code pour un référentiel Subversion?
- 9. Suppression des gestionnaires d'événements d'enfants
- 10. JQuery nettoyage des gestionnaires d'événements
- 11. Partage de données entre des gestionnaires d'événements?
- 12. Liaison de plusieurs gestionnaires à des éléments
- 13. Unité de test des gestionnaires http?
- 14. Unité de test des gestionnaires d'événements Flex
- 15. Partage des gestionnaires et des beans backing
- 16. Désabonnement de l'objet enfant prop modifié les événements
- 17. Gestionnaires de rappel imbriqués?
- 18. stratégie de sauvegarde Mysql
- 19. Modèle de stratégie paramétré
- 20. gestionnaires de page asp.net
- 21. Question de stratégie jQuery
- 22. Les gestionnaires d'événements Jquery renvoient des valeurs
- 23. Différences dans l'affectation des gestionnaires d'événements C#?
- 24. C# + Utilisation par programme des gestionnaires d'événements
- 25. NServiceBus spécifier l'ordre d'exécution des gestionnaires
- 26. Comment déclarer des gestionnaires d'événements dans ControlTemplate?
- 27. exécution simultanée des gestionnaires d'événements dans jquery
- 28. Stratégie de sélection multiple contrôlée par AJAX Stratégie
- 29. Réinitialisation des gestionnaires d'événements dans ExtJS
- 30. Comment puis-je obtenir des statistiques sur le taux de désabonnement par utilisateur?
Merci! J'apprécie beaucoup mieux cette solution que la solution Dispose. – stiank81
De MSDN: "Loaded et déchargé peuvent tous deux être déclenchés sur des contrôles à la suite de modifications de thème système initiées par l'utilisateur". Aussi, que se passe-t-il si vous décidez de détacher l'élément et de l'attacher à nouveau? Voulez-vous vous rappeler de reconfigurer les événements? – Zmaster