/// <summary> /// Applique le changement de thème. /// </summary> /// <param name="oldTheme">l'ancien thème.</param> /// <param name="newTheme">le nouveau thème.</param> private void ApplyNewTheme(IThemeDescription oldTheme, IThemeDescription newTheme) { // Supprimer les dictionnaires du thème actuel if (_currentResourceDictionaries != null && _currentResourceDictionaries.Any()) { foreach (var dic in _currentResourceDictionaries) { this.Resources.MergedDictionaries.Remove(dic); } } _currentResourceDictionaries = newTheme.GetResourceDictionaries().ToArray(); // Ajouter les dictionnaires du nouveau thème foreach (var dic in _currentResourceDictionaries) { if (!this.Resources.MergedDictionaries.Any(rd => rd.Source == dic.Source)) { this.Resources.MergedDictionaries.Add(dic); } } }
/// <summary> /// Initialise une nouvelle instance de la classe <see cref="ThemeChangedEvent"/>. /// </summary> /// <param name="sender">La source de l'évènement.</param> /// <param name="oldTheme">L'ancien thème.</param> /// <param name="newTheme">Le nouveau thème.</param> public ThemeChangedEvent(object sender, IThemeDescription oldTheme, IThemeDescription newTheme) : base(sender) { OldTheme = oldTheme; NewTheme = newTheme; }