20

If I have a ResourceDictionary in one project, is it possible to create another project that uses resources defined in the first project? Note that both projects are WPF Applications, not ControlLibraries.

Thanks!!

1

2 Answers 2

32

Yes, of course that's possible, as long as Project B has a reference to Project A.

<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" /> </ResourceDictionary.MergedDictionaries> 

Then you can just use the Resources defined in YourResourceFile.xaml.

Sign up to request clarification or add additional context in comments.

3 Comments

Oh snap. I'm giving that a try! Thanks!!
What happens if the projects don't share a reference? In my case I'm using PRISM and declaring styles in the Shell. I'd like to be able to reuse some of the defined colours.
If the Styles are defined in the Shell, then every object can use them, I think. Since the XAML is loaded into the MainPage at runtime, it also gets access to the global Resources.
13

I found that I had to reference the assembly itself and not use a project name. I also did not need to use the pack:/// syntax to get this to work.

This answer on the duplicate question specifies the format to use (I can verify that this syntax works in .NET 4.0): https://stackoverflow.com/a/10216253/1260563

Specifically (since I always forget the component part thinking it is a folder someone is using):

<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" /> </ResourceDictionary.MergedDictionaries> 

So if you have an assembly Abc.Def.dll and a file in that DLL called Xyz.xaml at the root level you would use:

<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" /> </ResourceDictionary.MergedDictionaries> 

Note: Resharper 7 pointed out that I had to reference the assembly itself.

1 Comment

Thank you for giving specific examples and pointing out the need for the component part of the path. This helped more than the half-dozen other solutions I've stumbled across.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.