private static void ChangeTheme(Collection<ResourceDictionary> mergedDictionaries, ThemeTones tone, Color accentColor)
        {
            var metroDictionaries = mergedDictionaries.OfType<MetroDictionary>().ToArray();

            foreach (var d in metroDictionaries)
                mergedDictionaries.Remove(d);

            if (tone == ThemeTones.None)
                return;

            ResourceDictionary toneDictionary = null;

            switch (tone)
            {
                case ThemeTones.Light:
                    toneDictionary = GetThemeResourceDictionary("StyleLight");
                    break;
                case ThemeTones.Dark:
                    toneDictionary = GetThemeResourceDictionary("StyleDark");
                    break;
            }

            var accentDictionary = CreateAccentDictionary(accentColor);

            mergedDictionaries.Add(toneDictionary);

            mergedDictionaries.Add(accentDictionary);

            foreach (var s in StyleFiles)
            {
                var dict = GetThemeResourceDictionary(s);
                dict.MergedDictionaries.Add(toneDictionary);
                dict.MergedDictionaries.Add(accentDictionary);

                mergedDictionaries.Add(dict);
            }
        }
 public static void SetThemeTone(DependencyObject obj, ThemeTones value)
 {
     obj.SetValue(ThemeToneProperty, value);
 }
 public static void ChangeTheme(ThemeTones tone, Color accentColor)
 {
     ChangeTheme(Application.Current.Resources.MergedDictionaries, tone, accentColor);
 }