Wpf изменить цветовую тему приложения

Я играю с перезаписью системных цветов, чтобы изменить внешний вид моего приложения. Новые системные цвета определены в отдельном словаре ресурсов следующим образом:

<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#FF2D2D2D" />

и файл загружается правильно. Но внешний вид элементов управления будет другим, если я переключу тему операционной системы (Windows 7) с «аэро» на «классику». Например. для «классики» основная часть приложения отображается темно-серым цветом (цвет ControlBrushKey) (см. первый рисунок). Но когда я запускаю приложение, когда активен "aero", большая часть приложения все еще имеет "нейтральный" вид аэро (второй рисунок). Почему так? Я ожидал, что разные цвета SystemColors будут использоваться одинаково, независимо от того, какая тема выбрана.

Классическая тема Windows

Windows theme aero

Смена системных цветов - хорошая идея? Или вы порекомендуете другие решения?


person tabina    schedule 30.08.2017    source источник
comment
Скорее всего, в шаблонах элементов управления в теме aero используются разные кисти. это имеет смысл, если вы хотите использовать обе темы одновременно во всем приложении. Поскольку вы уже знаете, какую кисть он использует, переопределение кисти для аэротемы не должно быть таким сложным.   -  person Timothy Groote    schedule 30.08.2017
comment
Проблема в том, что я не знаю, какие кисти на самом деле используются в теме aero. Я изменил все цвета SystemColors на темный цвет, но это не имело никакого значения. Как узнать, какие кисти используются и как их заменить?   -  person tabina    schedule 30.08.2017


Ответы (1)


Проблема в том, что я не знаю, какие кисти на самом деле используются в теме aero. Я изменил все цвета SystemColors на темный цвет, но это не имело никакого значения. Как узнать, какие кисти используются и как их заменить?

Вы можете посмотреть, как определяются шаблоны по умолчанию. Загрузите dotPeek или какой-либо другой декомпилятор .NET и декомпилируйте сборки PresentationFramework.* в C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\.

Вы найдете декомпилированные ресурсы BAML в _3 _-> _ 4 _-> _ 5_.

person mm8    schedule 30.08.2017