Sono nuovo di MVVM e ho deciso di andare avanti e iniziare ad adottarlo nei miei progetti futuri.Passaggio tra modalità di visualizzazione e modalità di modifica in MVVM?
Ho letto questa domanda e risposta correlate, ma non so come questo sarebbe stato implementato con MVVM.
Desidero che tutte le viste nel mio progetto abbiano 2 modalità, modalità di modifica e modalità di visualizzazione.
Non voglio che l'utente visualizzi di default TextBox per tutti i campi, preferisco che visualizzino TextBlocks (o imposti tutti i TextBoxe
s come proprietà IsReadOnly
su true (via lo stile ecc. Me lo dici ..)
Quando l'utente apre l'entità dovrebbe essere in genere TextBlocks, Labels (o readonly TextBoxes) ecc. E se fa clic su "Modifica" (se ha il permesso di farlo), dovrebbe andare in modalità Modifica, e tutto le etichette dei campi devono essere invertite in TextBoxes (RichTextBoxes ecc., ComboBoxes o altri campi modificabili che non sono solo etichette)
Sono sicuro che non sono l'unico ad avere questo problema, mi piacerebbe sentire dagli esperti qual è il modo più efficace per cambiare b tra queste modalità in puro MVVM e se sia comune dichiarare due viste separate per esso.
Si prega di fare riferimento a un buon articolo che spiega come farlo (forse è fatto da Visual Stato IDK).
UPDATE
io voglio sapere che cosa, piuttosto che come, la mia domanda riguarda il modello, ed è devo separare Edit Mode dalla modalità di visualizzazione sia a V o VM? Quindi, per favore, sottolinea questo dettaglio nella risposta.
Grazie in anticipo.
E gli altri campi? Ho detto che volevo che alcuni campi si invertissero in un DropDown, alcuni in uno slider, alcuni in un raccoglitore di date, mentre nel modo di visualizzazione sono tutti semplici TextBlocks/etichette? E questa è una parte molto essenziale per me. – Shimmy
@Shimmy - scusa, mi sono perso quel pezzettino (non so perché). Puoi fare lo stesso per i ComboBox, ma potrebbe essere la proprietà 'IsEnabled' che devi associare. – ChrisF
Quindi stai dicendo che dovrei creare una vista comune per le modalità di modifica/visualizzazione, avendo tutti i controlli dichiarati uno vicino all'altro impostando il controllo IsReadOnly o Visibility su IsViewMode sulla VM (usando il convertitore BooleanToVisibility per i controlli da nascondere), è giusto? ** Ho aggiunto del contenuto alla mia domanda. ** – Shimmy