artanis wrote:
I ViewModel devono avere solo proprietà bindate all'interfaccia ? o possono implementare anche logiche di business ?
generalmente fanno da mediatori, ma se l'app non è complessa, potrebbero avere anche direttamente logica (es: chiamate a servizi). molto dipende dalla complessità della tua applicazione e da quando vuoi
componentizzare/astrarre.
può un viewModel istanziare una classe di business e eseguire le varie chiamate ?
certo che può. in genere si fa così per non duplicare codice e controllare la logica "pura" da un punto solo.
posso gestire i Command dal controller invece che nel viewModel ?
lo sconsiglio se non è strettamente necessario. non è il massimo perchè leghi il VM ad un altro elemento e se non ti serve davvero farlo, alla fine è solo controproducente. è il VM, infatti, che gestisce tutte le problematiche connesse alla View e se metti un altro elemento di mezzo complichi solo la storia.
é corretto farlo ? come si fa ad intercettare i command ?
in questo caso devi lavorare con i messaggi ed il messenger. consiste nel mandare un messaggio dal tuo VM e "ascoltarlo" da qualche altra parte. ad esempio, questo si fa per poter aprire messagebox o simili da VM, senza accoppiare il VM stesso ad un certo tipo di UI. in questo modo, teoricamente, se dovessi cambiare la view, non devi cambiare niente sotto, perchè non sono accoppiati.
.