переключение словарей ресурсов wpf во время выполнения - PullRequest
16 голосов
/ 04 марта 2010

Я пытаюсь создать приложение 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);
   }
}

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

спасибо

см

1 Ответ

13 голосов
/ 04 марта 2010

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

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

на:

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