Dynamically loading loose XAML for styles in WPF
I was asked for a sample of how to do this and it is not difficult, but since someone asked I thought I'd go ahead and drop it out here, because it might show up in someone's search result and help.
The problem was that the person with whom I was working wanted to be able to add new XAML files to control style and layout without having to compile them into the app, into .baml, or into a dll. This would give them the ultimate flexibility of controlling the theme of the application completely via the app.config and whatever loose XAML they wanted/needed to add. The code to do this is pretty simple. Borrowing a friend and coworkers sample I modified it slightly to not compile the XAML into the app and to copy the file.
Assuming you have a means of determining what XAML you might like to load the code in free-form (and rather verbos) would be something of this nature:
//grab a shortcut to MergedDictionaries
appResources = App.Current.Resources.MergedDictionaries;
ResourceDictionary skin = new ResourceDictionary();
//The next two lines are the key to loading the loose XAML to use as a resource
Uri skinUri = new Uri(@"[path to XAML]", UriKind.RelativeOrAbsolute);
skin.Source = skinUri;
//currentSkin will have been previously assiged
// Store new skin
currentSkin = skin;
// If new skin specified, apply it
if (skin != null)
So, as you can see it is a pretty simple endeavor to dynamically load loose XAML and use it as a resource dictionary.