Estoy tratando de implementar el patrón MVVM (Model View ViewModel) para mi aplicación WinForms. Estoy usando C# 2005.Implementación de MVVM para la aplicación WinForm
Mi aplicación tiene un MainForm (Vista) con 2 cuadros de texto de múltiples líneas y 3 botones. El objetivo del primer cuadro de texto es mostrar un comentario continuo de lo que está haciendo la aplicación, cuando se hace clic en el botón. Sigo agregando líneas al TextBox para actualizar al usuario sobre lo que está sucediendo. El objetivo del segundo cuadro de texto es actualizar al usuario sobre cualquier condición de error, conflictos, valores duplicados; en resumen, cualquier cosa que requiera el usuario para revisar. Clasifica cada mensaje como una INFO o una ADVERTENCIA o un ERROR. Cada uno de los 3 botones realiza una acción y sigue actualizando los 2 cuadros de texto.
He creado una clase MainFormViewModel.
1ª pregunta: Cuando el usuario hace clic en el botón en MainForm, tengo que borrar el contenido de los 2 cuadros de texto, y desactivar el botón para que no pueda volver a hacer clic hasta que se complete la 1ª operación. ¿Debo hacer esta actualización de botones y cuadros de texto directamente en MainForm o debería usar MainFormViewModel de alguna manera?
2da pregunta: El botón clic llama a un método en la clase MainFormViewModel. Antes de llamar al método y después de llamar al método, quiero mostrar un mensaje en el primer cuadro de texto algo así como "Operación A iniciada/finalizada". Lo hago llamando a una clase común que tiene un método de registro para registrar mensajes en un TextBox o un archivo, o en ambos. ¿De nuevo si está bien hacerlo directamente desde MainForm? Llamo a este método de registro al inicio y al final del controlador de eventos.
3ª pregunta: ¿Cómo puedo propagar los mensajes de error de ViewModel a View? Creé una clase de excepción personalizada "TbtException". Entonces, ¿tengo que escribir 2 bloques catch en cada uno de los botones, uno para TbtException y otro para la clase Exception genética?
Gracias.
Muy informativo y útil. Gracias !! – AllSolutions
Por lo tanto, con respecto a la primera pregunta, ¿está diciendo que la vista debe llamar a ViewModel para actualizar una propiedad de estado, y los 2 cuadros de texto deberían enlazarse a esta propiedad y borrarse? Y con respecto a la segunda pregunta, todavía no estoy claro, cómo el cuadro de texto debe mantener un comentario continuo. Parece que ViewModel debería seguir escribiendo comentarios en ejecución en una variable, y TextBox debería engancharse a esa variable y seguir actualizándose? Lo siento pero estoy implementando esto por primera vez, por lo que agradeceré un poco más de ayuda. Tenga en cuenta que el texto del comentario en curso será muy largo. ¿Algún ejemplo de formulario? – AllSolutions
En cuanto al manejo de errores, ¿el formulario no tendrá ningún bloque try catch? – AllSolutions