我有一個通過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