覆盖文本框WPF的背景颜色

时间:2011-07-14 06:24:18

标签: wpf textbox background

我想使用样式(在WPF中)更改文本框的背景。但是文本框已经基于样式。所以当我给出背景时它设置它不会覆盖原始样式。下面是代码我是努力工作:

<TextBox text="value">  
<TextBox.Style>
  <Style TargetType="{x:Type TextBox}"  BasedOn="{StaticResource {x:Type TextBox}}">
     <Style.Triggers>
      <MultiDataTrigger>
         <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding Path=path}" Value="False"/>
         </MultiDataTrigger.Conditions>
        <MultiDataTrigger.Setters>
         <Setter Property="ForeGround" Value="Red"/>
         <Setter Property="Background" Value="LightGray"/>
        </MultiDataTrigger.Setters>
      </MultiDataTrigger>
     </Style.Trigger>
    </Style>

代码将前景变为红色,但文本框的背景中没有chnage。

如何覆盖backgorund颜色。我需要在WPF中执行此操作。

2 个答案:

答案 0 :(得分:3)

这绝对不是您正在使用的代码,没有ForeGround属性,理论上(除了错误)这将起作用,如果触发器被触发,背景会改变。

另一个有效的简单例子:

<CheckBox Name="cb" Content="Red BG"/>
<TextBox>
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=cb}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

然而,以下工作:

<CheckBox Name="cb" Content="Red BG"/>
<TextBox Background="Green">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=cb}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

请注意,背景在声明中首先设置为绿色,此直接值将覆盖由dependency property value precedence引起的样式,如果要设置初始值,则需要在样式的setter中完成(在任何触发器之外)。我怀疑这可能是你的问题。

答案 1 :(得分:0)

将setter语句放在样式语句

之后
<Setter Property="Background" Value="red"/>

像..

 <Style TargetType="{x:Type TextBox}"  BasedOn="{StaticResource {x:Type TextBox}}">
  <Setter Property="Background" Value="red"/>
 <Style.Triggers>.........