(scusate il mio povero inglese)
Sto sviluppando un'applicazione che usa WPF, codice EF prima usando MVVM (Caliburn.Micro).
Dovrebbe essere usato principalmente per il lavoro CRUD. Ho creato una classe BaseViewModel<T>
da cui tutti gli altri ViewModels ereditano ed espongono una proprietà T Selected
per collegarsi alla vista. So che non è consigliato esporre un modello alla vista, ma rende le cose semplici per far funzionare l'app.
Il problema è che non voglio inquinare i miei modelli (classi EF POCO) con INotifyPropertyChanged
, IDataErrorInfo
, IEditableObject
, ecc ... Quindi, c'è qualcosa che posso fare qui o devo fare duplica davvero tutte le proprietà del modello su ViewModel e rinuncia a provare a legare direttamente il modello? Vorrei usare anche la validazione degli attributi, poiché tutti i modelli li hanno già.
Ho usato questo approccio in passato con Silverlight / RIA ma in questo caso i Servizi RIA hanno generato le classi per me, con tutto il codice dell'impianto idraulico.
Posso ottenere gli errori di validazione usando la classe Validator ma devo anche indicare il componente che ha l'errore no l'interfaccia utente e penso di aver bisogno di implementare IDataErrorInfo
sul mio modello affinché questo accada, giusto?
Per INotifyPropertyChanged
Posso usare qualcosa come NotifyPropertyWeaver ma il mio problema è IEditableObject
e qualcosa per poter usare la convalida dell'attributo.
Sarebbe bello qualcosa come MagicBusinessBaseClassThatImplementAllThoseInterfaces<Model>
per incapsulare il modello in modo che io possa legarlo e andare avanti.
So che posso fare questo lavoro implementando manualmente le interfacce su ogni VM - ma basti pensare a tutto il codice "duplicato" che mi fa rabbrividire :(
In che modo gli sviluppatori WPF stanno facendo questo genere di cose oggi? C'è qualche tecnica di ninja segreta di cui non sono a conoscenza?