BackgroundColor的禁用TextBox

时间:2010-10-18 08:23:40

标签: .net wpf

我有一个通过ControlTemplate定义的TextBox。由于ControlTemplate,当IsEnabled-property设置为false时,TextBox不再自动变灰。

为了提供此功能,我在ControlTemplate中使用以下触发器:

<Trigger Property="IsEnabled" Value="False">                            
    <Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" />
</Trigger>

这很好用。但是我还必须设置BackgroundColor,但我没有在SystemColors中找到相应的条目。哪个条目是禁用控件(TextBoxes)背景的正确条目?是否有另一个来源而不是SystemColors?

我不想使用固定值。例如设置Background="#f4f4f4",因为我担心在某些环境中,disabled-background有另一个值,然后我的控件看起来不应该甚至是不可读的(例如,如果GrayTextBrush的值接近#f4)。

2 个答案:

答案 0 :(得分:14)

以下StackOverflow问题可能有所帮助:

Visual guide to System.Windows.SystemColors

修改

我做了一些额外的调查,并查看了Microsoft提供的标准XAML样式(请参阅Where can I download Microsoft's standard WPF themes from?)。您可以确切地看到哪些SystemColors值用于各种控件。

例如,以下是ComboBox的控件模板片段:

<Trigger Property="IsEnabled" Value="false">
    ...
    <Setter
        TargetName="Bd"
        Property="Background"
        Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
    ...
</Trigger>

Microsoft使用SystemColors.ControlBrushKey作为已禁用ComboBox的背景颜色。

答案 1 :(得分:0)

Win7 aero SystemColors.ControlBrushKey的十六进制值为F0F0F0。 不是F4F4F4。 所以一个不正确,不知道使用哪个,所以我将使用F4F4F4。