Search
Thursday, November 20, 2008 ..:: Blendblog.net ::.. Register  Login
 Bloggers Minimize

 Print   
 Sponsors Minimize

 Print   
 Users Online Minimize
Membership Membership:
Latest New User Latest: areel
New Today New Today: 0
New Yesterday New Yesterday: 0
User Count Overall: 15

People Online People Online:
Visitors Visitors: 0
Members Members: 0
Total Total: 0

Online Now Online Now:

 Print   
 Welcome to blendblog.net! Minimize

If you are a developer or designer who is creating cutting edge user interface experiences using Microsoft Expression Blend you've just found a great resource!  The purpose of this site is to share our experience with this brand new product.  As with any new piece of software there is a ton to discover.  Bugs will be revealed and workarounds discovered, hopefully this can be a resource to share in the discovery process!

While this site will focus largely on Expression Blend, it will also encompass WPF, Visual Studio, Silverlight, and other .net 3.5 technologies as they relate to the creation of great software.

Please login using your Microsoft LiveID or register a new account.  Doing so will let you comment on any of the blog entries on the site.  We look forward to helping you in your endeavors as well as you helping others in theirs!  We'd love to have more bloggers on our site...if you are interested please register and contact us!


 Print   
 Blend doesn't correctly support ResourceDictionaries from other projects in your solution (Updated) Minimize
Location: BlogsSean Cullinan    
Posted by: Sean Cullinan 1/30/2008 6:04 PM

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!

Permalink |  Trackback

Your name:
Title:
Comment:
Add Comment   Cancel 

  
 Search Minimize

 Print   
 Archive Minimize

 Print   
 Blendblog Survey Minimize
Our next client application will be written using:




Submit Survey  View Results

 Print   
Copyright 2008 by blendblog.net   Terms Of Use  Privacy Statement
DotNetNuke® is copyright 2002-2008 by DotNetNuke Corporation