在XAML中动态使用SystemColors

时间:2015-03-03 17:25:42

标签: c# wpf xaml

我希望我的应用程序能够在Windows中处理高对比度主题。要复制该问题,请先切换到高对比度主题。然后使用xaml中的代码创建一个简单的WPF应用程序:

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

在UI中看起来像这样

enter image description here

出于某种原因,无论我使用什么主题,ControlTextBrushKey始终解析为#FFFFFFFF。我错过了什么?它也不应该是绿色的吗?

1 个答案:

答案 0 :(得分:2)

以下是我的观察:

Windows 7:如果选择High Contrast #2 Aero Theme,则ControlTextBrushKey按预期为绿色。但是,如果选择High Contrast #1 Aero Theme,则ControlTextBrushKey将返回白色。以下是High Contrast #2 Aero Theme

的屏幕截图

enter image description here

Windows 8 :无论具有默认主题的高对比度(High Contrast #1High Contrast #2)如何,ControlTextBrushKey始终返回#FFFFFFFF

以下是High Contrast #1&amp;的表格。 High Contrast #2取自Here,根据此表在Windows 7上运行。搜索ControlTextBrush

高对比度#1

High Contrast #1

高对比度#2:

High Contrast #2