BackgroundColor of a disabled TextBox

2020-03-16 02:25发布

I have a TextBox that is defined through a ControlTemplate. Because of the ControlTemplate, the TextBox is no more automatically grayed out when the IsEnabled-property is set to false.

To provide this functionality, I use the following trigger within the ControlTemplate:

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

This works fine. However I have to set also the BackgroundColor but I don't have found a corresponding entry in SystemColors. Which entry is the right entry for the background of disabled controls (TextBoxes)? Is there another source than SystemColors?

I don't want to use a fixed value. e.g. setting Background="#f4f4f4", because I fear that in some environments, the disabled-background has another value and then my control looks not as it should or even is unreadable (if for example the value of the GrayTextBrush is near #f4).

标签: .net wpf
2条回答
我命由我不由天
2楼-- · 2020-03-16 02:56

The following StackOverflow question may help:

Visual guide to System.Windows.SystemColors

Edit:

I did some additional sleuthing and looked at the standard XAML styles that Microsoft provides (see Where can I download Microsoft's standard WPF themes from?). You can see exactly which SystemColors values are used for various controls.

For example, here is a snippet of the control template for ComboBox:

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

Microsoft uses SystemColors.ControlBrushKey as the background color of a disabled ComboBox.

查看更多
够拽才男人
3楼-- · 2020-03-16 03:03

The hex value for Win7 aero SystemColors.ControlBrushKey is F0F0F0. Not F4F4F4. So that one is not correct, don't know which to use so I'm gonna use F4F4F4.

查看更多
登录 后发表回答