文本更改后更改样式

问题描述:

更改文本时难以找到文本更改样式。我已经设置好了,所以当我输入时样式会改变,并且默认设置为灰色以指示该字段需要进行的操作。当文本从默认文本改变并保持这种方式时,我希望文本为黑色和正常字体重量。文本更改后更改样式

这里是我当前的触发风格

<Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Foreground" Value="DimGray" /> 
     <Setter Property="FontSize" Value="15" /> 
     <Setter Property="FontStyle" Value="Italic" /> 
     <Setter Property="Padding" Value="5,4,0,4" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
        <Border 
     x:Name="Bd" 
     BorderBrush="{TemplateBinding BorderBrush}" 
     BorderThickness="{TemplateBinding BorderThickness}" 
     CornerRadius="7" 
     > 
         <Border.Background> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="2,1"> 
           <GradientStop Color="{Binding Path=GradientColorStart}" Offset="0"/> 
           <GradientStop Color="{Binding Path=GradientColorEnd}" Offset="1"/> 
           <!-- 
           <GradientStop Color="#CCCCCC" Offset="0"/> 
           <GradientStop Color="#FFFFFF" Offset="1"/> 
           --> 
          </LinearGradientBrush> 
         </Border.Background> 
         <ScrollViewer x:Name="PART_ContentHost"/> 
        </Border> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsEnabled" Value="False"> 
          <Setter 
       Property="Background" 
       TargetName="Bd" 
       Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" 
       /> 
          <Setter Property="Foreground" Value="Green"/> 
         </Trigger> 
         <Trigger Property="Width" Value="Auto"> 
          <Setter Property="MinWidth" Value="100"/> 
         </Trigger> 
         <Trigger Property="Height" Value="Auto"> 
          <Setter Property="MinHeight" Value="20"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsFocused" Value="True"> 
       <Setter Property="Foreground" Value="Black" /> 
       <Setter Property="FontWeight" Value="Bold" /> 
       <Setter Property="FontStyle" Value="Normal" /> 
       <Setter Property="Text" Value="" /> 
      </Trigger> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Foreground" Value="#00112d" /> 
       <Setter Property="FontWeight" Value="Normal" /> 
       <Setter Property="FontStyle" Value="Normal" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

这事我会用绑定的TargetNullValue接近,字符串必须是在第一疗程无效,所以这可能不是一个选择:

<TextBox Text="{Binding TestString, TargetNullValue=Enter Text Here, UpdateSourceTrigger=PropertyChanged}"> 
    <TextBox.Style> 
     <Style TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding TestString}" Value="{x:Null}"> 
        <Setter Property="Foreground" Value="{StaticResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
</TextBox>