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); }