public static void ApplyMaterialDesignPack(UserControls.FormControl formControl) { var md = formControl.Resources.MergedDictionaries; MDPacks.ForEach(pack => { var resourceDictionary = md.Any(dictionary => dictionary.Source.AbsoluteUri == pack); if (resourceDictionary == false) { var mr1 = new ResourceDictionary { Source = new Uri( pack, UriKind.Absolute) }; formControl.Resources.MergedDictionaries.Add(mr1); } }); var BI = new BundledTheme { BaseTheme = BaseTheme.Dark, PrimaryColor = PrimaryColor.Grey, SecondaryColor = SecondaryColor.Orange }; formControl.Resources.MergedDictionaries.Add(BI); }
public void WhenValueIsMissingThemeIsNotSet(BaseTheme?baseTheme, PrimaryColor?primaryColor, SecondaryColor?secondaryColor) { //Arrange var bundledTheme = new BundledTheme(); //Act bundledTheme.BaseTheme = baseTheme; bundledTheme.PrimaryColor = primaryColor; bundledTheme.SecondaryColor = secondaryColor; //Assert Assert.Throws <InvalidOperationException>(() => bundledTheme.GetTheme()); }
//Comprueba el tema actual private void EsTemaOscuro() { BundledTheme bundled = (BundledTheme)App.Current.Resources.MergedDictionaries.First(); if (Properties.Settings.Default.TemaOscuro) { bundled.BaseTheme = BaseTheme.Dark; } else { bundled.BaseTheme = BaseTheme.Light; } }
// ////////////////////////////////// // FRONT END // ////////////////////////////////// // Controla cual es el logo mostrado, el de tema claro u oscuro private void ComprobarLogo() { BundledTheme bundled = (BundledTheme)App.Current.Resources.MergedDictionaries.First(); if (bundled.BaseTheme == BaseTheme.Dark) { MiniLogo.Source = new BitmapImage(new Uri("/Resources/LogoOscuro.png", UriKind.Relative)); } else { MiniLogo.Source = new BitmapImage(new Uri("/Resources/LogoClaro.png", UriKind.Relative)); } }
static MaterialDesignHelper() { if (_bundledTheme.IsNull()) { foreach (var dictionary in Application.Current.Resources.MergedDictionaries) { if (dictionary is BundledTheme bundledTheme) { _bundledTheme = bundledTheme; break; } } } }
public MainWindow() { InitializeComponent(); _currentMaterialDesignTheme = Application.Current.Resources.MergedDictionaries .OfType <BundledTheme>().FirstOrDefault(); PrimaryColorListView.ItemsSource = Enum.GetNames(typeof(MaterialDesignColors.PrimaryColor)).OrderBy(s => s); SecondaryColorListView.ItemsSource = Enum.GetNames(typeof(MaterialDesignColors.SecondaryColor)).OrderBy(s => s); PrimaryColorListView.SelectedItem = "LightBlue"; SecondaryColorListView.SelectedItem = "Indigo"; }
// Aqui falta implementar el metodo que hara el cambio de tema de claro a oscuro y viceversa. private void DarkModeToggle_Click(object sender, RoutedEventArgs e) { BundledTheme bundled = (BundledTheme)App.Current.Resources.MergedDictionaries.First(); if (bundled.BaseTheme == BaseTheme.Dark) { bundled.BaseTheme = BaseTheme.Light; LogoImage.Source = new BitmapImage(new Uri("/Resources/LogoClaro.png", UriKind.Relative)); } else { bundled.BaseTheme = BaseTheme.Dark; LogoImage.Source = new BitmapImage(new Uri("/Resources/LogoOscuro.png", UriKind.Relative)); } }
public void WhenAllValuesAreSetThemeIsSet() { //Arrange var bundledTheme = new BundledTheme(); //Act bundledTheme.BaseTheme = BaseTheme.Light; bundledTheme.PrimaryColor = PrimaryColor.Purple; bundledTheme.SecondaryColor = SecondaryColor.Lime; //Assert ITheme theme = bundledTheme.GetTheme(); Assert.Equal(SwatchHelper.Lookup[(MaterialDesignColor)PrimaryColor.Purple], theme.PrimaryMid.Color); Assert.Equal(SwatchHelper.Lookup[(MaterialDesignColor)SecondaryColor.Lime], theme.SecondaryMid.Color); Assert.Equal(Theme.Light.MaterialDesignBody, theme.Body); }
//Cambia el tema actual. Si el tema es el oscuro, lo cambia al claro y viceversa. public void CambiaTema() { BundledTheme bundled = (BundledTheme)App.Current.Resources.MergedDictionaries.First(); if (bundled.BaseTheme == BaseTheme.Dark) { bundled.BaseTheme = BaseTheme.Light; Properties.Settings.Default.TemaOscuro = false; Properties.Settings.Default.Save(); } else { bundled.BaseTheme = BaseTheme.Dark; Properties.Settings.Default.TemaOscuro = true; Properties.Settings.Default.Save(); } }