public static void ChangeAppStyle(ResourceDictionary resources, Accent newAccent, AppTheme newTheme) { if (resources == null) { throw new ArgumentNullException(nameof(resources)); } ApplyResourceDictionary(newAccent.Resources, resources); ApplyResourceDictionary(newTheme.Resources, resources); }
public static void ChangeAppStyle(Window window, Accent newAccent, AppTheme newTheme) { if (window == null) { throw new ArgumentNullException(nameof(window)); } var oldTheme = DetectAppStyle(window); ChangeAppStyle(window.Resources, oldTheme, newAccent, newTheme); }
public static void ChangeAppStyle(Application app, Accent newAccent, AppTheme newTheme) { if (app == null) { throw new ArgumentNullException(nameof(app)); } var oldTheme = DetectAppStyle(app); ChangeAppStyle(app.Resources, oldTheme, newAccent, newTheme); }
private static void OnThemeChanged(Accent newAccent, AppTheme newTheme) { SafeRaise.Raise(IsThemeChanged, Application.Current, new OnThemeChangedEventArgs { AppTheme = newTheme, Accent = newAccent }); }
private static void ChangeAppStyle(ResourceDictionary resources, Tuple <AppTheme, Accent> oldThemeInfo, Accent newAccent, AppTheme newTheme) { var themeChanged = false; if (oldThemeInfo != null) { var oldAccent = oldThemeInfo.Item2; if (oldAccent != null && oldAccent.Name != newAccent.Name) { var oldAccentResource = resources.MergedDictionaries.FirstOrDefault(d => d.Source == oldAccent.Resources.Source); if (oldAccentResource != null) { resources.MergedDictionaries.Add(newAccent.Resources); resources.MergedDictionaries.Remove(oldAccentResource); themeChanged = true; } } var oldTheme = oldThemeInfo.Item1; if (oldTheme != null && oldTheme != newTheme) { var oldThemeResource = resources.MergedDictionaries.FirstOrDefault(d => d.Source == oldTheme.Resources.Source); if (oldThemeResource != null) { resources.MergedDictionaries.Add(newTheme.Resources); resources.MergedDictionaries.Remove(oldThemeResource); themeChanged = true; } } } else { ChangeAppStyle(resources, newAccent, newTheme); themeChanged = true; } if (themeChanged) { OnThemeChanged(newAccent, newTheme); } }