Here is my view on this -
Yes, same ViewModel can be used with multiple views; e.g. say you have a CustomerViewModel
having details of a customer and some commands, you can use this ViewModel with a view having a DataGrid
to display all the customers(so an ObservableCollection<CustomerViewModel>
will be used) and also use the same ViewModel with a view having a form to edit the details of a single customer.
It depends, but generally No. A view can depend on multiple ViewModels if it comprises of multiple views; say, a single Window having multiple views. e.g. A dashboard having list of customers, a form to add a new customer, a section to display products etc.;
but even in this case it's always better to create a single parent ViewModel which will contain instances of other sub view models.
I always prefer to have one ViewModel for a single view and try to design my application that way.
But yes it all depends on the application and how you design your views and viewmodels. In MVVM you first design your Models and ViewModels based on business logic and then use them with your views.
Also have a look at this similar question - ViewModel per View or per Model?