you need to notify the UI that there has been a change. Implemement INotifyPropertyChanged and add it to the the ActiveControl assignment:
private void LoadSection(object plugin)
{
ActiveControl = plugin;
NotifyPropertyChanged();
}
EDIT#1
I think you should use the button in your user control to bind to the command in your main window. This is better than trying to pass the mainwindow viewmodel to the usercontrol, which creates a dependency and violates the MVVM pattern. Add this button to your usercontrol1 in the sample you gave me
<Button Content="Set MyContent to null using binding to main window command" Height="40" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.PublicCommand}"></Button>
It uses a relative binding to the command in the main window, which in my app, I use one main window to hold all usercontrols/views. That way I can control what is showing and use command definitions only in one place that I know will always be available.
hope this helps