
Prism is one of the hottest topics in Silverlight. Here, I provide the top 10 things that I think every developer should know about Prism.
For a great write-up on Prism, I recommend:
Shawn Wildermuth’s MSDN article.

1. Prism is a collection of libraries for implementing best-practices in Silverlight
Now, Prism actually contains more than just the libraries (it also has source code, examples, quickstarts and excellent documentation), but the key thing is that Prism is a tool for creating testable/maintainable applications.
Silverlight Prism Video
2. Prism is a Buffet (term coined by Shawn Wildermuth)
Prism has several different tools, and you can use any or all of them at your discretion. It’s not a heavy-weight framework. You can use Prism selectively.
Intro to Prism Interview
3. Finding and Installing Prism is Confusing
For whatever reason, it’s hard to find and download Prism. Actually, it’s not difficult; it’s just hard to get properly oriented. For one thing, Microsoft sites refer to Prism as the “Composite Application Guidance”. For another, the source appears to be on CodePlex, but it’s actually on MSDN. So there’s a bit of a run-around before you can get up and going with Prism. However, it’s great code and jumping through the hoops is worth it.
Downloading and Building Prism Guide
4. Prism Supports Modularity
Prism is chock full of support for breaking applications down into manageable pieces. It supports Unity for Dependency Injection and Service Location. It also has a Module Catalog which manages the loading of .dlls and .xap files into Silverlight applications. If you’re interested in application testability and maintainability, modularity is for you.
Prism Modularity Video
Prism Modularity Interview
5. Prism Supports Master Pages - Regions
Regions allow the visual parts of an application to be separated out and developed independently. It’s similar to how master pages are used in ASP.NET. If you’ve ever wanted to hand out UI tasks to different development teams, this is the tool that will make life much easier.
Prism Regions Video
Prism Regions Interview
6. Prism Supports Loosely Coupled Communication - Eventing
Once you’ve broken an application into multiple pieces, there’s always the question of how do these pieces communicate? Especially, how do they communicate when they aren’t supposed to know about each other? Here, Prism Eventing steps into the gap and provides communication infrastructure.
Prism Eventing Video
Prism Eventing Interview
7. Prism Supports Commanding - Help for MVVM
MVVM/Presentation Patterns are powerful patterns for building testable and scalable Silverlight applications. Unfortunately, they require Commanding (the ability for the XAML/Interface to directly communicate with ViewModels/Presenters), and raw Silverlight 2 doesn’t have this functionality. Prism Commanding comes to the rescue and uses attached properties to enable this scenario.
Prism Commanding Video
Prism Commanding Interview
8. Prism Supports Sharing Code Between Silverlight and WPF - Multi-Targeting
Silverlight and WPF are pretty similar. They both use XAML, and they have similar libraries they can call. Unfortunately, they’re different enough that you can’t add a reference from Silverlight to a WPF .dll (or vice versa). The way to share functionality between these technologies is to share code between projects. Enter the Project Linker. This is an application that makes it easier to share code between Silverlight and WPF.
9. Most Silverlight Applications can Benefit from Prism
Prism isn’t the answer for all applications, of course. There are some apps (small applications, media applications and possibly games) that Prism might not help with, but in general the patterns are widely applicable (Dependency Injection, Commanding, etc.). Even if you don’t use Prism, the patterns in Prism are still valuable. In fact, there are other projects such as Ninject and Caliburn that implement some of the same patterns as Prism.
When to Use Prism Interview
10. Prism Helps with MVVM/MVP
Prism doesn’t directly implement either MVVM (Presentation Model) or MVP patterns. Instead, it provides support (example: Commanding) that makes these patterns easy to implement. See the Reference Implementation and Quickstarts for examples on how to implement these patterns using the support that Prism provides.
This post uses the free Function Icon Set.
July 1st, 2009
Prism is amazing. It was pretty much made by geniuses. Unfortunately, it’s kind of hard to figure out 1) where to download it and 2) what to do with it after you’ve downloaded it. This is a guide that shows you how to get up and running with Silverlight Prism:
1. (optional) Go to the Prism Codeplex site. Look for the download. However, it’s a trick. The Prism code is actually on MSDN.

2. Go to the MSDN site. Where you’ll find 3 confusing links. Unless you’re interested in multi-targeting (sharing source between Silverlight and WPF sites), all you need is the first one. Download the “CompositeApplicationGuidance-xxx.exe” file.

3. Launch the .exe and select a folder. The Prism source will be extracted there. Be patient. This will take a few minutes.
4. Browse to the folder with the source. Notice the help file. This file has a lot of great information about Prism.

5. Dive into the “CAL” folder. Probably stands for “Composite Application Library”, but no one knows for sure

6. Select the “CompositeApplicationLibrary.sln” file. *Don’t* select the “Desktop” version (this is for WPF).

7. Close the “Desktop” folder in the solution. This is for the WPF source.

8. Consider whether you want a debug or release version of the libraries. One handy trick is to create a debug build, and then make sure that the Prism source stays in its present folder. That way, whenever you’re debugging your applications, you’ll be able to see Prism Source information on the call stack.

9. Build the Solution.
10. Navigate to the “..\CAL\Silverlight\Composite.UnityExtensions\Bin\Debug” (or, if a release build, “..\Bin\Release”).
This folder has the 5 key Prism assemblies:
- Microsoft.Practices.Composite.dll
- Microsoft.Practices.Composite.Presentation.dll
- Microsoft.Practices.Composite.UnityExtensions.dll
- Microsoft.Practices.ServiceLocation.dll
- Microsoft.Practices.Unity.dll

July 1st, 2009
Prism has an evolved event model that has taken in a lot of the lessons learned from CAB. Today’s show: Eventing in Prism. This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- The 2 problems that the Event Aggregator tries to solve.
- The price to pay for loosely coupled communications (and loosely coupled apps in general).
- Why the Prism Eventing doesn’t use strings.
- Load order - eventing helps in a somewhat surprising way.
See out companion hyper-video on how to do Prism Eventing. In addition, we have a previous hyper-video all about Silverlight Prism and how to create a new Prism project.
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
June 29th, 2009
Commanding allows us to have a very slim View and push our logic into a Presenter/ViewModel and make that logic more testable. Unfortunately, commanding is one of the things that wasn’t included out of the box with Silverlight 2. Instead, there has to be some infrastructure to support Commanding. Prism has that infrastructure. In this episode, we talk to the Patterns and Practices team members to find out their thinking on Commanding and Prism. This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- What does Commanding give us?
- How does Commanding and no-codebehind in MVC relate?
- How Commanding offers a level of indirection and a richer abstraction than eventing.
- Creating Commands.
See out companion hyper-video on how to do Prism Commands. In addition, we have a previous hyper-video all about Silverlight Prism and how to create a new Prism project.
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
June 25th, 2009
In a Silverlight MVVM application, we have two related entities: the View and the ViewModel (Presenter). They go together to help present information to the user, but which one should be created first? Which one should know about the other one? This show: View or ViewModel (Presenter) First? This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- View First Benefits
- ViewModel (Presenter) First Benefits
- Does either approach contribute to Blendability (displaying sample data in Blend)
- How Blend 3 helps the Blendability story
- Testing of the View
- Appropriate use of Bindings
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
June 18th, 2009
Ever used master pages in ASP.Net? Prism supports this kind of notion as well. This show: Regions in Prism. This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- Benefits of Regions
- Regions as placeholders
- Regions are named areas
- Layout strategies with Regions
- Selecting the Region types
See out companion hyper-video on how to do Prism Regions. In addition, we have a previous hyper-video all about Silverlight Prism and how to create a new Prism project.
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
June 9th, 2009
Congratulations to Jonathan Hornberger who won the Silverlight Tour seat giveaway at Portland Codecamp. Thanks to everyone who came and participated! It was one of the best Code Camps yet.


June 3rd, 2009
One of the hardest things to understand about Prism is when to use it. When does it make sense? When doesn’t it make sense? This show: When to Use Prism.
This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- What projects don’t need Prism
- Prism as a buffet of optional components
- Prism when teams are physically dispersed
- Comparing Prism to CAB
- Shawn’s juicy bits of Prism in Silverlight: Optimizing .xap and asset loading across the wire
To see how to use Prism, see our hyper-video all about Silverlight Prism and how to create a new Prism project.
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
May 28th, 2009
Modularity is one of the best things about Prism: It allows us to separate concerns and make testable, maintainable applications. It’s also one of the easiest concepts to understand. This show: Modularity in Prism. This show was taped on location in Microsoft building 5 with Patterns & Practices team members Bob Brumfield and David Hill. Also joining us was Shawn Wildermuth.
We talk about:
- Benefits of modularity in Prism
- Asynchronous downloading of modules
- How modules are tied to .dlls and .xap files
- Containers and Unity in Prism
- An overview of Services
- How Services allow testing
- Using containers other than Unity
See out companion hyper-video on how to do Testing, Module Catalogs, and Unity in Prism for Silverlight. In addition, we have a previous hyper-video all about Silverlight Prism and how to create a new Prism project.
————————-
Music kindly provided by YACHT
If you’re interested in Silverlight 2 or Silverlight 3, see our company where we do Silverlight Consulting and Silverlight Development.
Follow us on twitter
Podcast: Download
May 26th, 2009
The Washington DC stop on the Silverlight Tour is coming up. It’s June 16th-18th!
More and more employers are looking for Silverlight experience, and this is a great way to learn Silverlight 2 and Silverlight 3.

May 21st, 2009
Previous Posts