我有一个通过ControlTemplate定义的文本框。由于ControlTemplate,当IsEnabled属性设置为false时,TextBox不会再自动变灰。禁用文本框的BackgroundColor
提供这种功能,我用下面的触发控件模板中:
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" />
</Trigger>
这工作得很好。不过,我还必须设置BackgroundColor,但我没有在SystemColors
中找到相应的条目。哪个条目是禁用控件背景的正确条目(TextBoxes)?是否有另一个来源比SystemColors?
我不想使用固定值。例如设置为Background="#f4f4f4"
,因为我担心在某些环境中,禁用背景有另一个值,然后我的控件看起来不应该如此,甚至不可读(例如,如果GrayTextBrush的值接近#f4)。
+1谢谢。有趣的帖子,但我的问题的答案,我没有找到。我错过了什么? – HCL 2010-11-16 16:37:56
而不是为您的背景使用固定值,您想要使用SystemColors值,是否正确?通过查看默认的XAML样式,看起来Microsoft使用SystemColors.ControlBrushKey值作为禁用控件的背景颜色。这种颜色应该与SystemColors.GrayTextBrush形成鲜明对比,因此用户将能够在禁用控件时读取该值。 – 2010-11-16 16:57:03
对于一个很好的答案+1。注意使用DynamicResource,以便在应用程序运行时,如果用户更改Windows主题中的颜色,应用程序会自动更改颜色。 – 2012-12-13 11:29:38