Thanks Fernando. That was helpful.
I actually figured this out with looking at the help documents and few of the quick starts.
I had to work out 3 different scenarios by making use of RequestNavigate, as I needed to pass parameters to the views, without having to use event aggregators
- Load a view in the same project as the Shell : this was straight forward as I did a Export on the view with a contract name and then just did a _regionManager.RequestNavigate("RegionName", new Uri("ViewExportName" + query, UriKind.Relative))
- Load view from another silverlight application under the same project solution :
for this I added the module in the modulecatalog. Once the module got downloaded did the same as above by using the views export name.
- Load a view in an external silverlight application under a completely separate virtual directory :
for this I downloaded the xap using a DeploymentCatalog and did the above on download completed.
The idea was to, as I said, to make use of the Navigation framework and eliminate the use of event aggregators for passing parameters between modules. Also I didnt want to predefine the modules to load in specific regions in their IModule implementation.
In effect the modules being downloaded need not know anything about regions. I wanted the Shell to have full control on deciding where each view should be placed in the regions defined.
Doing the above gave me the flexibility.
Not sure if I'm on the right track, but I guess it does resolve my concerns :) . Also with this implementation i was able to implement nested regions. Let me know your opinion !!