2012-06-22 4 views
4

Я хочу реализовать тему типа ASP.Net в WPF. Пользователь имеет выбор различных предопределенных тем и может переключиться на другую тему.Как реализовать theming в wpf

Для реализации этого я попытался создать различные resourcedictionary для каждой темы и сохранить необходимый стиль с помощью ключа. Коллекция ключей одинакова во всех темах, но их определение в каждом из них отличается.

Я использую ниже код для переключения темы по щелчку:

var theme = Application.LoadComponent(uri) as ResourceDictionary; 
Application.Current.Resources.MergedDictionaries.Clear(); 
Application.Current.Resources.MergedDictionaries.Add(theme); 

Во всех страницах/UserControl/окна я установить StaticResource и примененные соответствующую клавишу. Когда я переключаюсь на другую тему, это применяется только после следующего события в UI.

Если я установил изменение StaticResource в DynamicResource, то он будет применен немедленно.

Пожалуйста, поделитесь своей идеей, чтобы достичь этого с помощью StaticResource?

ответ

0

К сожалению, вы не можете достичь этого с StaticResource. Элемент управления с StaticResource needs to be reloaded after switching to another Theme для нового ресурса, который будет применяться.

Возможно, вы захотите создать функциональные возможности для перезагрузки текущей страницы после смены темы.

 Смежные вопросы

  • Нет связанных вопросов^_^