When I instantiate a VM, it typically instantiates the model on its own, which retrieves the data (from a database, xml, or json file). If the requirements call for modifying/saving the data, I keep the model around in a protected property inside the viewmodel. Most of the time, I set the data context to the form, and bind controls to the viewmodel(s) and various other properties. I don't think I've ever set the data context to a specific viewmodel because that just means more typing.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013