Updated: Today I was able to make this work. I'm not sure what changed but today I moved my resource dictionary into a WPF class library "utility" project that we are creating. I then changed the XAML in each file to point to <ResourceDictionary Source="pack://application:,,,/myUtil;Component/myResourceDictionary.xaml"/>. I then deleted the myResourceDictionary.xaml file from my projects and everything still worked. Blend also correctly jumped across projects to the myResourceDictionary.xaml file in my Utility project when I edited various templates. I have NO idea what changed today. So yes, you can place your resource dictionaries in a utility project and reference it from all the other projects!
We are creating a WPF solution that has multiple projects and want to have them share a merged resource dictionary. There appears to be no inherent way in WPF to create solution level resource dictionaries.
The simplest solution I tried was to create a Solution folder that contained my ResourceDictionary file. I then planned to add an "existing file" to all of my projects that pointed to this ResourceDictionary.xaml file. This doesn't work as when I add the existing file it just makes a copy of the file, not a pointer to the existing file.
I played around with creating another project in my solution ala this post on Shannon Braun's site but had no luck making that work. I kept on getting runtime errors that said it was unable to find the packed resource even though and design time VS 2008 validated the path I was pointing to. I think it may have had something to do with build order, but I was running out of time.
I finally settled on a solution that worked ok in VS 2008 but Blend apparantly has problems with. I created my resource dictionary (MainResourceDictionary.xaml) on my main windows application based project (MainWindow) then referenced that in my control based project. I did this by adding
to my usercontrol.resources block. In my XAML I used resources from this resource dictionary on my usercontrol and was able to see my changes in the VS 2008 designer as well as successfully run my application.
Flip over to the RTM Blend and things didn't go so nicely. I loaded my solution up in blend, clicked on my control to load it into the designer and I got an "Exception was thrown." message. The Exception was "an error ocurred while finding the resource dictionary "pack://application:,,,/MainWIndow;Component/MainResourceDictionary.xaml". I could run the project out of blend but the designer can't see it.
I then tried this in the December preview of blend as well and got the same issue. It appears that Blend's designer cannot handle loading a Resource Dictionary for files outside the current project. Hopefully MSFT will fix this at some point.
What is really needed is some elegant way to create ResourceDictionaries and Themes at the solution level that can be used in all projects in the solution. As it stands now I will likely have to replicate my resource dictionaries across all my projects in some manual fashion, a process that is sure to cause problems over the years I will have to support my code.
Have a good weekend!