Datatrigger is another option to achieve this.
give names to your controls and write triggers on MainControl
defaul user control visibility = visible and control 2 visibility is Collapsed.
Assign Name to button of usercontrol2 on mainwindow, on click on this name usercontrol 2 should open.
<DataTrigger Binding="{Binding userContro2name.IsFocused} value = true> // or may be some other property which changes when you click on name.
<Setter Property ="nameofUserControl2".Visibility Value="Visible"/>
<Setter Property ="nameofUserControl1".Visibility Value="Collapsed"/>
</DataTrigger >
<DataTrigger Binding="{Binding userContro2name.IsFocused} value = false>
<Setter Property ="nameofUserControl2".Visibility Value="Collapsed"/>
<Setter Property ="nameofUserControl1".Visibility Value="Visible"/>
</DataTrigger >
you can apply this triggers on your control and write trigger on style of that control