Non riesco a capire come ottenere la notifica del modello di visualizzazione delle modifiche nel modello senza aggiungere un sacco di elementi specifici dell'interfaccia utente come INotifyProperyChanged e INotifyCollectionChanged nel mio modello o creare tonnellate di eventi diversi e fare un sacco di cose che si sentono come se fossero specifici dell'interfaccia utente e dovrebbero rimanere fuori dal modello.Come mantenere la logica di visualizzazione fuori dal modello e dalla logica aziendale dal modello di visualizzazione in MVVM?
Altrimenti dovrei solo duplicare tutte le logiche di business nel modello di visualizzazione per assicurarmi che tutto sia aggiornato, e quindi qual è il punto di avere il modello allora?
Uno dei più difficili che ho nel mio modello è una proprietà di una classe "Categoria". Si può pensare ad esso come una struttura ad albero e la proprietà è tutta discendente di nodi fogliari. Bene nel modello che la proprietà è generata al volo in modo ricorsivo attraverso tutti i suoi bambini, che è tutto bene e bene. Tuttavia, il modello della vista deve legarsi a quella proprietà e deve sapere quando cambia. Dovrei semplicemente cambiare il modello per ospitare il modello di visualizzazione? Se lo faccio allora il modello di vista non fa veramente nulla a questo punto, il modello solleva tutte le notifiche necessarie delle modifiche e la vista può semplicemente collegarsi direttamente al modello. Anche se la modella era qualcosa a cui non avevo la fonte, come potrei aggirare questo?
Attualmente INotifyCollectionChanged è parte di System.Collections.Specialized che si trova in WindowsBase.dll. L'ho sempre trovato strano –
Buon punto Cameron. Trovo che sia altrettanto confuso. Aggiungendo la mia risposta di conseguenza ... –
Hmm, immagino che l'unica volta che ne ho mai sentito parlare è per le esercitazioni WPF per scopi di database, ma suppongo che non ci sia nulla di WPF inerente a loro che non sia usato per WPF. – Davy8