Our docking windows in MVVM work the same way that a normal WPF TabControl does. There is a single ContentPresenter in each tab control's Template that displays only the selected tab's content. This is done so that you don't have all the elements loaded in the visual tree for every tab that is open, which could affect performance when resizing the window if everything was loaded and if you had complex element hierarchies like enormous data grids.
As with TabControl, when using MVVM, the view isn't realized until the related tab is selected.
Why specifically do you need all view content loaded at launch? Usually application state should all be available in the view-models if done properly. And what is happening in your IsVisibleChanged event handlers?