Sto cercando di implementare il pattern MVVM (Model View ViewModel) per l'applicazione WinForms. Sto usando C# 2005.Implementazione MVVM per l'applicazione WinForm
La mia applicazione ha un MainForm (vista) con 2 caselle di testo multi linea e 3 pulsanti. Lo scopo della prima casella di testo è mostrare un commento in corso su cosa sta facendo l'applicazione, quando si fa clic sul pulsante. Continuo ad aggiungere linee al TextBox per aggiornare l'utente su ciò che sta accadendo. Lo scopo della seconda casella di testo è di aggiornare l'utente su qualsiasi condizione di errore, conflitti, valori duplicati; in breve, tutto ciò che è richiesto dall'utente per la revisione. Classifica ogni messaggio come INFO o AVVISO o ERRORE. Ciascuno dei 3 pulsanti esegue un'azione e continua ad aggiornare le 2 caselle di testo.
Ho creato una classe MainFormViewModel.
1a domanda: Quando l'utente fa clic sul pulsante in MainForm, devo cancellare il contenuto delle 2 caselle di testo e disabilitare il pulsante in modo che non possa più essere cliccato di nuovo fino al termine della prima operazione. Dovrei fare questo aggiornamento di caselle di testo e pulsanti direttamente nel MainForm o dovrei usare MainFormViewModel in qualche modo?
Seconda domanda: Il clic sul pulsante chiama un metodo sulla classe MainFormViewModel. Prima di chiamare il metodo e dopo aver chiamato il metodo, voglio mostrare un messaggio nella prima casella di testo qualcosa come "Operazione A iniziata/conclusa". Lo faccio chiamando una classe Common che ha un metodo Log per registrare i messaggi su un TextBox o su un file o entrambi. Ancora una volta se è giusto farlo direttamente dal MainForm? Io chiamo questo metodo di registrazione all'inizio e alla fine del gestore di eventi.
3a domanda: Come si propagano i messaggi di errore da ViewModel a View? Ho creato una classe di eccezioni personalizzata "TbtException". Quindi devo scrivere 2 blocchi di cattura in ogni pulsante, uno per TbtException e altro per la classe di eccezione genetica?
Grazie.
Molto informativo e utile. Grazie !! – AllSolutions
Quindi, per quanto riguarda la prima domanda, stai dicendo che la vista dovrebbe chiamare ViewModel per aggiornare una proprietà di stato, e le 2 caselle di testo dovrebbero collegarsi a questa proprietà e cancellarsi? E per quanto riguarda la seconda domanda, non sono ancora chiaro, come la casella di testo dovrebbe mantenere un commento in esecuzione. Sembra che ViewModel continui a scrivere i commenti in esecuzione in una variabile e TextBox dovrebbe collegarsi a quella variabile e continuare ad aggiornarsi? Scusate ma lo sto implementando per la prima volta, quindi apprezzerò un po 'di più. Si noti che il testo del commento in esecuzione sarà molto lungo. Qualche esempio di forma? – AllSolutions
Per quanto riguarda la gestione degli errori, il modulo non avrà alcun blocco catch try? – AllSolutions