 <p>You will have 2 ViewModels because you have 2 views</p> <p>1 ViewModel will have</p> <ol> <li>Your service proxy</li> <li>List</li> <li>ShowDetailFor(string selectedItemFromList) This should create a new instance of VM2 passing it the service proxy in ctor and invoke ShowDetail on VM2.</li> </ol> <p>2 ViewModel will have</p> <ol> <li>MyObject (if it is just messagebox, no need to have ViewModel)</li> <li>ShowDetail(int id)</li> </ol> <p>Once you have the ViewModel use WPF binding and command to connect data from VM to XAML</p> <p>MVVM for user control becomes a bit more complicated, so if possible stay away from UserControls for now.</p>