using System; using System.Windows; namespace REghZyFramework.Themes { public static class ThemesController { public enum ThemeTypes { Light, ColourfulLight, Dark, ColourfulDark } public static ThemeTypes CurrentTheme { get; set; } private static ResourceDictionary ThemeDictionary { get { return Application.Current.Resources.MergedDictionaries[0]; } set { Application.Current.Resources.MergedDictionaries[0] = value; } } private static void ChangeTheme(Uri uri) { ThemeDictionary = new ResourceDictionary() { Source = uri }; } public static void SetTheme(ThemeTypes theme) { string themeName = null; CurrentTheme = theme; switch (theme) { case ThemeTypes.Dark: themeName = "DarkTheme"; break; case ThemeTypes.Light: themeName = "LightTheme"; break; case ThemeTypes.ColourfulDark: themeName = "ColourfulDarkTheme"; break; case ThemeTypes.ColourfulLight: themeName = "ColourfulLightTheme"; break; } try { if (!string.IsNullOrEmpty(themeName)) ChangeTheme(new Uri($"Themes/{themeName}.xaml", UriKind.Relative)); } catch { } } } }