我有一个通过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)。
答案 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。