To switch to VM first you would switch your user controls to ContentControls. Those ContentControls would each have a View.Model attached property with a binding pointing to the VM that should be injected at that site.
For a full databound composition approach, this is extremely easy with the WPF TabControl because it properly supports databinding and if using a Conductor.Collection.OneActive you can do the whole thing with one line of Xaml:
<TabControl x:Name="Items" />
But Silverlight's toolkit TabControl is broken. So, I tend to use a combination of ListBox (for tabs) and ContentControl for tab content, like so:
<ListBox x:Name="Items" DisplayMemberPath="DisplayName">
...use a horizontal stack for items panel...
<ContentControl x:Name="ActiveItem" />
This obviously requires more styling, but is also more flexible view-wise.
I don't really see a problem with your current implementation, unless you need the functionality of a conductor. If not, just keep it the way that it is. In fact, I did something exactly like this in a recent LOB app where I just needed the visual subdivision
of Tabs, but not the behavior of a conductor.
If you need to bind different VMs to those UserControls, you can always use the Bind.Model attached property as well.