I've been through too much pain trying to switch between managing VM state for various views in the shell window, together with VM state for numerous edit dialogues, modal or non-modal, and state for the windows themselves.
Now I wish to redo with one shell window, and hoping for only one dialogue window, then my windows and Vms have far less coupling, and I can borrow the shell's VM management patterns into the dialogue's management.
I see quite a lot of guidance for directly managing popups and less generalised non-modals, but is there any established pattern or guidance for using only one dialogue to host various VMs? Even better, is there any such functionality available in Prism already?
I want to really to stick the DRY principle, and inheritance in both views and VMs is adding complexities I can't afford on a supposed to be quick first iteration prototype.
This is actually quite simple, but has some complexities. First off, you will want to create a custom dialog service. This service can be as simple or as complicated as you like. The main thing this service will do is show a dialog that is treated as it's own shell. Meaning that the dialog will be the same, but the contents within the dialog will be different based on the information you pass to it when you call it. SO this means a custom dialog with it's own regions. To handle using different views in the dialog shell, I would utilize the navigation service.
Your dialog might look something like this:
You can modify this approach to fit your needs exactly, but you get the idea.
EDIT: I also want to mention that you can even get crazy with this by allowing your dialog to have it's own separate navigation within it and unique to each instance that is shown. I have a Pluralsight course that shows how to do this if you are interested. https://www.pluralsight.com/courses/prism-showing-multiple-shells