Подтвердить что ты не робот

Переключение ресурсных словарей wpf во время выполнения

Я пытаюсь создать приложение wpf, которое позволяет пользователю изменять тему во время выполнения. То, что я сделал до сих пор, - создать ресурсный словарь со всеми цветами для приложения, определенного в нем, а затем я привязываюсь к этому словарю в xaml.

Ниже приведен код для переключения ресурсного словаря:

if (System.IO.File.Exists(fileName))
{
   using (FileStream fs = new FileStream(fileName, FileMode.Open))
   {
      ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
      Resources.MergedDictionaries.Clear();
      Resources.MergedDictionaries.Add(dic);
   }
}

Этот код работает нормально, и я знаю, что он переключает словарь ресурсов, но он не обновляет элементы, которые уже отображаются на экране. Мой вопрос: как я могу обновить или перепроверить экран, чтобы учесть новый словарь ресурсов?

спасибо

см

4b9b3361

Ответ 1

В моем случае мне просто пришлось изменить:

Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(dic);

в

Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(dic);