代码之家  ›  专栏  ›  技术社区  ›  HCL

禁用文本框的背景色

  •  7
  • HCL  · 技术社区  · 14 年前

    我有一个通过ControlTemplate定义的文本框。由于ControlTemplate,当IsEnabled属性设置为false时,文本框不再自动变灰。

    为了提供此功能,我在ControlTemplate中使用以下触发器:

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

    这个很好用。不过,我还必须设置背景色,但在 SystemColors . 哪个条目是禁用控件(文本框)背景的正确条目?除了SystemColors还有其他来源吗?

    我不想使用固定值。例如设置 Background="#f4f4f4" ,因为我担心在某些环境中,禁用的背景有另一个值,然后我的控件看起来不是它应该的,甚至是不可读的(例如,如果graytextBrush的值接近f4)。

    2 回复  |  直到 12 年前
        1
  •  14
  •   Community Egal    7 年前

    以下StackOverflow问题可能有帮助:

    Visual guide to System.Windows.SystemColors

    编辑:

    我做了一些额外的调查,并研究了微软提供的标准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>
    

    微软使用 SystemColors.ControlBrushKey 作为禁用的背景色 组合框 .

        2
  •  0
  •   Christian80    12 年前

    win7 aero systemcolors.controlBrushkey的十六进制值为f0f0f0。 不是F4F4F4。 所以那个不正确,不知道用哪个,所以我要用f4f4f4。