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).
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
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With