MVVM è possibile in. NET 4.5 con l'associazione modello e l'uso di controlli associati a modelli come FormView.
Ecco la tecnica che uso:
Progettare ViewModels per ogni UserControl e UserControl nidificato e quindi utilizzare un FormView che è sempre in EditMode, dove includo i controlli che si associano alle proprietà del modello usando le espressioni Binding.
Ho impostato SelectMethod e UpdateMethod di FormView. Il primo restituisce ViewModel e il secondo chiama TryUpdate () su di esso. Nei postback, chiamo sempre il metodo di aggiornamento di FormView in Preload o Load. In questo modo ViewModel è sempre aggiornato dalla vista.
Eseguo la logica all'interno di ViewModel e su PreRender ricollego la vista per applicare eventuali modifiche. La chiave in questo metodo consiste nell'iniettare ViewModel nella vista (UserControl) al di fuori della vista (ad esempio a livello di pagina) e, naturalmente, assicurarsi che sia serializzabile e memorizzato nella cache in ViewState o in qualsiasi altro luogo che scelgo.
Infine, disabilito ViewState in tutti i controlli poiché sono ultimamente "pilotati" dal ViewModel con stato memorizzato nella cache e non hanno bisogno del loro stato.
Questa tecnica non mi ha mai deluso finora e vorrei solo trovare una soluzione per il binding di comandi / pulsanti, come WPF.