I will try to answer your questions separately.
About clicking a menu item and loading another module
I assume your scenario consists in click a button from a module and loading a particular module. That module in turn, will show one of
its views in the MainRegion.
If this is the case, you could
set the module to be loaded on demand and load it when you click the button
in the menu. You might do this in the Menu module, injecting the ModuleManager and using the
moduleManager.LoadModule method. Then in the module’s initialize method, you could create an instance of the view you want to show in the MainRegion and add the view to the region (using
About loading modules
The above answer also deals with this topic.
Modularity QuickStarts for WPF show how modules can be loaded by other modules (just to make the concept clear, modules are not loaded inside other modules, they are just loaded and they are all part of the application).
Related to declaring regions in a module view, the answer is “yes”, this can be done. You can also
create scoped regions (regions with their own
RegionManager), but that depends on your requirements. To add a region inside a view, you can do it as you would in the Shell
(you can check
How to: Add a Region).
Remember, that modules have different views (amongst other things) which they inject into regions. This thread provides some more insight
Confirmation of understanding
Please let me know if this helps.