Ciao Mario,
grazie per il video, sei stato molto chiaro, bravo.
Per me non è corretto che le modifiche siano visibili anche nella prima finestra, quella in cui ci sono le informazioni in sola lettura. Quella dovrebbe aggiornarsi solo SE l'utente decide di salvare le modifiche.
Quindi, la cosa più facile che puoi fare è mettere in binding le proprietà *_VI nella finestra di modifica, e poi copiarle i valori sulle proprietà "originali" quando l'utente salva i dati.
Comunque, questo è un approccio che si presta ad errori perché per ogni proprietà devi anche creare la corrispettiva *_VI e assicurarti che i valori siano sempre copiati correttamente. Prima o poi introdurrai un bug, è garantito.
La responsabilità di tracciare le modifiche dovrebbe essere assolta da un altro oggetto. Vedi per esempio questa implementazione. C'è un progetto di esempio da scaricare.
https://www.codeproject.com/Articles/41791/Almost-automatic-INotifyPropertyChanged-automaticGrazie al NotifyPropertyChangeObject che vedi nell'articolo, sarai in grado di annullare le modifiche in qualsiasi momento chiamando il metodo suo Reset.
Poi fai in modo che il binding agisca ogni volta che si digita un carattere. Così eviterai il problema del focus.
Quando la finestra di modifica viene chiusa, notifica alla finestra in sola lettura che i dati sono cambiati. Ti basta esporre una proprietà come vedi qui. È sufficiente una proprietà booleana che vale true se i dati sono stati aggiornati.
https://stackoverflow.com/questions/3468433/return-an-object-from-a-popup-windowA questo punto la finestra in sola lettura, se i dati sono cambiati, recupererà dal db (dal file di testo) i dati aggiornati. Così l'utente vedrà sempre i dati attuali.
Questo approccio ha due vantaggi:
- Ti permette di visualizzare all'utente i valori generati automaticamente lato database (es. gli id autoincrementanti);
- Un domani potrai fare in modo che la finestra in sola lettura usi un oggetto diverso da quello usato dalla finestra di modifica. Infatti non è raro che le due finestre visualizzino più o meno dati rispetto all'altra.
ciao,
Moreno
Modificato da BrightSoul il 02 ottobre 2019 22:32 -