MahApps/MahApps.Metro — pull request #1205 by punker76 (2014-03-24 16:43:01+00:00)
Title: [WIP][RFC] ThemeManager improvements without braking change

this pr is a preparation for #1151 Added support for changing the theme base for an application

- add MetroTheme class (works like Accent class)
- add DefaultMetroThemes property to ThemeManager (so users can add
there own themes)
- overload some methods to work with new and old one

with this it's possible to add different light/dark themes

```csharp
private void LoadThemeBases()
{
var programDirectory = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory);
if (programDirectory != null)
{
var themeBaseDirectory = programDirectory + @"\ThemeBases";

if (Directory.Exists(themeBaseDirectory))
{
var grayLightPath = Path.Combine(themeBaseDirectory, "GrayLight.xaml");
var grayDarkPath = Path.Combine(themeBaseDirectory, "GrayDark.xaml");

if (File.Exists(grayLightPath) && File.Exists(grayDarkPath))
{
ThemeManager.DefaultMetroThemes.Add(new MetroTheme("GrayLight", new Uri(grayLightPath)));
ThemeManager.DefaultMetroThemes.Add(new MetroTheme("GrayDark", new Uri(grayDarkPath)));

ThemeManager.ChangeMetroTheme(Application.Current, "GrayLight");
}
}
}
}
```