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

Я пытаюсь создать wpf приложение, которое позволяет пользователю изменять тему во времени выполнения. Что я сделал, до сих пор, создают resourcedictionary со всеми цветами для приложения, определенного в нем, и затем я связываю с этим словарем в 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);
   }
}

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

спасибо

см

16
задан smauel 4 March 2010 в 16:53
поделиться

1 ответ

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

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

на:

Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(dic);
13
ответ дан 30 November 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: