Load a ResourceDictionary from an assembly


Question

I've got an assembly somewhere on the file system, e.g. "C:\temp\test.dll". In that assembly there's a ResourceDictionary, e.g. "abc.xaml".

How can i get that ResourceDictionary? Maybe there is a way using Reflections? I didn't find a solution so far.

Thanks in advance!

Edit: Just wanted to add that I want to access the Resources in the Dictionary, e.g. a Style.

1
16
4/2/2009 11:28:00 AM

Accepted Answer

Edit: I found an even better solution which works with ResourceDictionaries:

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");

Well, I couldn't get it to work with ResourceDictionaries, so I'm using good old Resource Files instead ;) For anyone interested, here is how I did it:

Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");

You can get "NameOfResource" with Reflector, as Ian suggested.

10
4/3/2009 9:28:47 AM

You actually need to write the Uri like this:

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"pack://application:,,,/test;component/myresource.xaml");

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon