The nature of this problem comes from the PRISM framework implementation. Let me explain:
- when request navigate a view into region, the PRISM framework first checks and update its regions.
- when updating if a region is not found, it will be removed from the region manager and nothing further will be executed
- how PRISM updates its regions - it tries to find the RegionManager from the region (the ContentControl in the pane). It uses a recursive call through the parent UIElements, starting from the region.
- When the pane is docked, PRISM finds the RegionManager from the Shell (I assume the Docking control is in the Shell). But, when a pane goes floating, it's placed inside a Window and the above code which recursively searches for parent element which has RegionManager fails.
The issue can be reproduced without Docking control. It's enough to pull out the registered region from the VisualTree and place it inside another opened Window.
In this scenario, I would suggest making sure that the parent UIElement of ContentControl has set RegionManager.
Please, refer to the attached project. It uses the MS example with PRISM - ViewSwitchingNavigation from the PRISM package, but the MainContentRegion is placed inside a pane. Note that the following code is required in order to request navigate a view when the pane is floating:
I hope this helps.
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos
and start improving your app based on facts, not hunches.