Question

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!!

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top