He estado leyendo sobre el patrón MVVM de diversas fuentes como MSDN:¿Quién establece DataContext en Silverlight MVVM
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
En ese artículo se dice: A diferencia del presentador de MVP, un modelo de vista no necesita una referencia a una vista.
Si la vista (XAML) asume que es DataContext es el modelo de vista entonces en qué parte del código es la siguiente línea:
view.DataContext = viewModel;
El modelo de vista no se sabe nada acerca de la vista por lo que no se puede establecer el DataContext. Si le doy a ViewModel la referencia ¿rompo el patrón MVVM? Mi otra opción es tener algún tipo de Creador o Presentador extra cuyo único trabajo es cablear todo (esperar el evento cargado de la Vista, configurar el DataContext).
Sé que las diferentes vistas pueden compartir el mismo DataContext (por ejemplo, establecer el DataContext solo para la ventana principal y otros lo verán) pero en muchos casos eso no es posible en absoluto ni siquiera factible.