2015-03-03 3 views
0

Я бы хотел, чтобы мое приложение обрабатывало темы высокой контрастности в Windows. Чтобы воспроизвести проблему, сначала переключитесь на тему с высоким контрастом. Затем сделать простое приложение WPF с этим кодом в XAML:Динамическое использование SystemColors в XAML

<StackPanel> 
     <CheckBox>A checkbox</CheckBox> 
     <CheckBox Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}">ControlTextBrushKey</CheckBox> 
    </StackPanel> 

Это будет выглядеть, как это в UI

enter image description here

По какой-то причине, ControlTextBrushKey всегда решает #FFFFFFFF независимо от того, какой темы Я нахожусь. Что мне не хватает? Разве он не должен быть зеленым?

+0

ли это то же самое, если вы используете TextElement.Foreground? –

+0

Как это использовать? – tofutim

+0

замените его на переднем плане. Буквально. –

ответ

2

Ниже мое наблюдение:

для Windows 7: Если High Contrast #2 с Aero Theme выбран, ControlTextBrushKey зеленый, как и ожидалось. Но если выбрано High Contrast #1 с Aero Theme, ControlTextBrushKey возвращает White. Ниже снимок экрана, имеющий High Contrast #2 с Aero Theme

enter image description here

Windows 8: Независимо от высокой контрастности (High Contrast #1 или High Contrast #2) с темой по умолчанию, ControlTextBrushKey всегда возвращает #FFFFFFFF

Ниже приведены таблицы для High Contrast #1 & High Contrast #2 взято с Here и работает на Windows 7 в соответствии с этой таблицей. Поиск ControlTextBrush

Контрастный # 1

High Contrast #1

Контрастный # 2:

High Contrast #2

+0

Действительно, я использую Windows 8 в этом случае. Итак, в Windows 8 нет возможности связать с зеленым ControlTextBrush? – tofutim

+0

Эта диаграмма была полезна - http://www.quppa.net/syscol/ - но это не объясняет, почему флажок по умолчанию станет зеленым и как его сопоставить. Может быть, это WindowText? Не ControlText? – tofutim

+0

Спасибо. Это было очень полезно. Я должен был использовать WindowText. – tofutim

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