Ho due schermi:
- Una schermata con un elenco di elementi, in cui ogni elemento dell'elenco ha "Mostra dettagli" e "Aggiorna pulsanti"
- Una schermata dei dettagli dell'elemento. Il pulsante "Mostra dettagli" passa alla schermata dei dettagli delle voci.
Quando fai clic sul pulsante "Aggiorna", è necessario prendere una decisione in base allo stato dell'articolo e quindi passare alla schermata di aggiornamento delle voci o chiedere conferma all'utente prima di procedere.
La schermata dei dettagli dell'elemento ha lo stesso pulsante "Aggiorna" che ha la stessa logica .
Ilproblemachehoècomeimplementareimodellidivisualizzazioneinmodopulitoinmodotalechelalogicadiaggiornamentononsiaduplicata.
Inprimoluogo,hocreatoimodellidivisualizzazioneperglischermi:
classItemListViewModel{publicObservableCollection<ItemViewModel>Items{get;}}classItemDetailsViewModel{//HowdoesthiscallsItemViewModel:UpdateCommand?publicICommandUpdateCommand{get;}}classItemViewModel{publicICommandShowDetailsCommand{get;}publicICommandUpdateCommand{get;}}
Percondividerel'UpdateCommand,vedoleseguentiopzioni:
ChiediaItemDetailsViewModeldicreareeconservareun'istanzadiItemViewModel:
classItemDetailsViewModel{ItemViewModel_itemViewModel;publicICommandUpdateCommand=>_itemViewModel.UpdateCommand;}
HaveItemDetailsViewModelderivadaItemViewModel:
classItemDetailsViewModel:ItemViewModel{}
UtilizzaunserviziocheimplementalalogicadiaggiornamentoechiamasiaItemViewModelcheItemDetailsViewModel
interfaceIItemService{voidUpdate();}
Sinotichepartedellalogicadiaggiornamentoèlanavigazione.HounIINavigationServicechevieneiniettatoneimodellidivisualizzazione.DovreipassareaIItemServicesescelgodiusarlo.
Nonsoqualesiailmiglioreeperché.Eccoalcunedellepreoccupazionicheho:
- Opzionen.2:sembrastranoderivaredaItemViewModel.
- Opzionin.3:l'utilizzodelservizioIItemsServicesembrainteressante,macomedifferenziarequestoserviziodaunaltroserviziochestaeffettivamentesalvandonellamemoria?Guardailservizioeilsuometodo"Aggiorna" non lo penseresti solo per la logica di navigazione.
Apprezzerei un consiglio e un ragionamento.
Gli articoli \ libri che ho trovato su MVVM sono troppo semplici e non parlano di scenari più complicati.