Динамическое изменение textcolor для всего приложения во время выполнения

#c# #wpf #themes #skinning

#c# #wpf #темы #Скининг

Вопрос:

Я хочу одновременно динамически изменять цвет текста (передний план) всех элементов управления в приложении во время выполнения. Есть ли рекомендуемый способ сделать это?

Спасибо.

Ответ №1:

Рекомендуемый способ — определить все возможные темы при разработке в отдельных файлах. Затем измените тему во время выполнения, что в конечном итоге изменит цвет переднего плана элементов управления.

Смотрите этот простой пост, в нем объясняется, как вы можете изменять темы во время выполнения.

 //declare a resource dictionary
ResourceDictionary skin = new ResourceDictionary();
//load your theme
skin.Source = new Uri(@”ThemeName.xaml”, UriKind.Relative);
Application.Current.Resources.MergedDictionaries.Clear();
//apply it
Application.Current.Resources.MergedDictionaries.Add(skin);
  

Если вы хотите узнать больше о темах, перейдите на эту страницу. В нем есть 9 примеров тем, которые вы можете загрузить и посмотреть, как создаются темы

Ответ №2:

Используйте стили, ресурсы, словари ресурсов и применяйте их во время выполнения.

Вот хорошая статья о том, как вы можете это сделать:

http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/