I'm currently evaluation the dock control, and noticed in the example that you use datatemplates to map the viewmodel to the view.
One issue we'd have with that is that datatemplates can be slow with complex views (which we have). Another issue with using viewmodels is that since we have many modules, if we wanted to create a tab document from one module, and that tab document code is from another module, we'd have to introduce a dependency to the other module. With prism navigation we can map a view to a constant string then use that constant anywhere with navigation without having to worry about additional dependencies.
Does / would the dock control work using prism navigation?
In the module: Container.RegisterTypeForNavigation<SearchOrderView>(NavigationViewNames.SalesOrder.SearchOrder);
In the view: prism:ViewModelLocator.AutoWireViewModel="True"
Then to load it into the dock we'd use this somewhere else: RegionManager.RequestNavigate(RegionNames.WorkspaceRegion, NavigationViewNames.SalesOrder.SearchOrder);