ho letto su modello MVVM da varie fonti come MSDN:Chi stabilisce DataContext in Silverlight MVVM
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
In quell'articolo si dice: A differenza del presentatore in MVP, un ViewModel non ha bisogno di un riferimento a una vista.
Se la vista (XAML) assume è DataContext è il ViewModel poi dove nel codice è la seguente riga:
view.DataContext = viewModel;
Il ViewModel non sa nulla circa la vista in modo che non può impostare il DataContext. Se fornisco il ViewModel come riferimento, interrompo il pattern MVVM? La mia altra scelta è di avere un qualche tipo di Builder o Presenter extra il cui unico compito è quello di collegare l'intera cosa (attendere l'evento caricato della Vista, impostare DataContext).
So che le diverse viste possono condividere lo stesso DataContext (ad esempio, imposta DataContext solo per la finestra principale e altre lo vedranno) ma in molti casi ciò non è affatto possibile o addirittura fattibile.