Navigating between modules with Silverlight

Oct 15, 2012 at 1:13 PM


Suppose I'm working with Prism but I'm not using regions.

How can I just navigate between the modules without using Prism navigation, just the native Silverlight navigation?

I'm using Silverlight 5, and I also have VS 2010 and 2012.

Oct 15, 2012 at 4:14 PM


Never mind the question, I know the answer already.

Thanks anyway.


Oct 15, 2012 at 5:41 PM


I'm glad you found the answer for this, for those interested in this subject you might find useful to know that the Silverlight navigation framework does not directly support the use of the MVVM pattern or the use of a dependency injection container or MEF, which you may need if you have loosely coupled views defined in different modules.

Based on my understanding, in order to achieve this, you can extend the Silverlight default navigation system by setting the ContentLoader property to a custom INavigationContentLoader implementation, which is used by the frame to load the content associated with a specific URI which can instantiate and initialize the view and its associated view model as appropriate and display it in the Frame.

For more information about this you could check the following resources:

Also, for examples that implement a custom content loader, but which takes advantage of Prism regions you could check the following blog post from Karl Shifflett:


Agustin Adami

Oct 16, 2012 at 3:08 AM
Edited Oct 16, 2012 at 3:18 AM

Thank you Agustin.

I thought I knew. I appreciate your answer.

Before I study those links, I'd like to know:

1) If that extension ultimately provides us with all the standard navigation, Forward, Backward, to a specific Uri wether it belongs to the same assembly or not, and to a different website...

2) I'm interested in Unity, does the navigation extension with Unity have all the benefits of it's counterpart Mef?

3) Is it the same navigation that allows us to navigate between regions?


Oct 16, 2012 at 7:28 PM
Edited Oct 16, 2012 at 8:29 PM

Hi Rafael,

I will try to answer your different concerns:

  1. Based on my understanding the behavior you will obtain when using this extensions will depend on the custom ContentLoader you define. In the case of Karl Shifflett's implementation, as far as I know the standard forward and backward functionality is supported for specific Uris, that will be matched to the corresponding views registered in the container by benefiting of the IRegionNavigationContentLoader implementation provided with Prism (used to identify the view in a region that is the target of a navigation request). On the other hand, as far as I know the Frame control only supports navigation to Silverlight pages and not to external web sites.
  2. In my opinion there will be no difference other than the particular characteristics of each container (e.g. how to register the views, how to import them, etc).
  3. As far as I know, this is not the same navigation used to navigate between regions, as you may find in Karl's Shifflett sample, in order to support this integration, a custom FrameRegionNavigationService was also implemented which differs from the default NavigationService implementation provided with Prism.

I hope you find this handy,

Agustin Adami