1. ¿Es necesario tener un nuevo ViewModel para cada Vista? De lo contrario, ¿puede crear un solo MasterViewModel una violación de MVVM?
No realmente. Puede tener ciertos ViewModels que corresponden a una gran cantidad de vistas, cada una de las cuales muestra los mismos datos en un formato diferente. De hecho, esta es toda la razón de ser de MVVM en primer lugar: segregación de las reglas de visualización y comerciales para que el formato de visualización se pueda cambiar cargando diferentes vistas.
También puede tener una vista que corresponda a una cantidad de modelos de vista diferentes. Esto es reutilización del código en la interfaz de usuario de la pantalla.
2. ¿Cómo se comunicarán ViewModels entre ellos?
Normalmente los modelos de vista se comunican con las vistas a través de la vinculación WPF. Es por eso que se llama MVVM y no MVC.
ViewModels se pueden comunicar entre sí a través de una serie de medios .NET estándar.
3. MainWindow.xaml.cs donde estoy integrando todas las Vistas, solo debería tener la inicialización del modelo de vista y asignar el DataContext ¿o puedo poner otros códigos también?
Normalmente separa cada vista en un archivo XAML diferente.Eso hace que sea fácil sustituir otra vista por un formato diferente de la misma información.
Por lo general, la recomendación es separar el código en módulos autónomos; es decir, un archivo de vista uno, un archivo de modelo de vista uno.
4. Estoy teniendo mis EventHandlers definidos. ¿Debo usarlos en ViewModel o fuera de model-view-viewmodel?
Los eventos deben manejarse en vistas si son puramente impulsados por la interfaz de usuario (es decir, no tiene nada que ver con los datos).
Si un evento debe afectar algún cambio en los datos subyacentes (o realizar alguna acción en las reglas comerciales), a su vez puede generar un evento en el modelo de vista. Tenga en cuenta que este evento en ViewModel puede ser diferente del evento en la Vista/IU.
"Vistas (y posiblemente instanciar ViewModels para ellas" No en el escenario ViewModel-first. – Euphoric
gracias @euphoric. Observado. Pregunta actualizada – gideon
Gracias @giddy ... Sabía que no entendía claramente el MVVM, pero Empecé a trabajar en él por algún motivo. De todos modos lo obtendré e implementaré de una mejor manera esta vez – PawanS