36 messaggi dal 16 aprile 2008
www.pollosky.it
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?

Luca
Semplicemente sgancia gli eventhandler quando chiudi la finestra, sul Close. Così come fai oggetto.evento += puoi usare il meno.

Ciao

Il mio blog
Homepage
36 messaggi dal 16 aprile 2008
www.pollosky.it
Si infatti ho fatto così...mi chiedevo se ci fosse una soluzione più indicata per gestire questo tipo di problemi.

Luca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC