Ho uno strano comportamento nella gestione degli eventi tramite WPF.
La mia situazione è questa: ho una finestra padre che apre una finestra figlia in maniera modale, la child window ritorna un dato che poi verrà trattato dalla finestra padre.
Il problema è che dopo che ho chiuso la finestra figlia, i riferimenti agli event handler associati ai controlli della finestra figlia rimangono ancora attivi; per cui, se scateno un property changed dalla finestra padre vengono attivati gli eventi della finestra figlia precedentemente aperta.
Per spiegarmi meglio vi allego una stupidissima implementazione che descrive il problema, potete scaricare il progetto da questo indirizzo:
http://www.olisoft-olisistemi.it/uploads/WpfApplication2.zip Per vedere il comportamento in azione fate così:
- Una volta che la finestra principale è avviata cliccate sul button "ChildWindow" (in Output sulla console vedrete che viene scatenato l'evento PropertyChanged e fin qui tutto ok)
- Chiudete la ChildWindow
- A questo punto cliccate sul button "Test" della finestra principale -> viene di nuovo scatenato l'evento SelectionChanged associato al ComboBox della finestra figlia anche se è stata chiusa!
La mia domanda è: evidentemente c'è qualcosa che non va, dov'è che sbaglio? quale è l'approccio migliore per evitare questo tipo di comportamento?