Recently I got hold of around 6 styles and needed to try them to see which one fits perfectly in our application. We can either change the <Application.Resources>, add a <ResourceDictionary> to set the style or we could do it dynamically to see the results.
Where to get the styles from?
There are few style available on web. One is at
http://wpfthemes.codeplex.com/
Or create your own using
http://thematic.codeplex.com/
Using it in Application.Resources:
-> First we add the XAML file containing the style to the project.
We add the file
“BureauBlack.xaml” to the project
-> In App.xaml of application we write:
<Application x:Class="StyleSelector.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary Source="BureauBlack.xaml"></ResourceDictionary>
</Application.Resources>
</Application>
Results:
Without style
With:
(there is some problem with the Style, it doesn't set the Window background color)
Setting style in code
Now let's try to set the style of a window in code. Here is a method which takes in a XAML file name (containing styles and added to project). We create a new ResourceDictionary object and set it to the Window's Resource collection.
private void SetStyle(string xamlFileName)
{
//clear the resources
this.Resources.Clear();
if (!string.IsNullOrEmpty(xamlFileName))
{
//load new resources
ResourceDictionary resDict = new ResourceDictionary();
resDict.Source = new Uri(xamlFileName, UriKind.Relative);
//merge the resources to preserve any other resource you may have added
this.Resources.MergedDictionaries.Add(resDict);
//or to overwrite and avoid memory leak you could also do this
//this.Resources = resDict;
}
}
We can use this method in the "Set Style to:" Combo Box selection changed event.