2017-03-11 1 views
0

ich Problem habe Farbe auf meine Textbox mit der Anwendung, wenn sie deaktiviert ist,TextBox WPF in IsEnabled = „False“ Zustand ist die Anwendung nicht korrekt Hintergrundfarbe

acctualy Ich habe DataGrid- und ich Reihe von farbigen mit "#E0E4E5" Farbe. Und ich möchte die Farbe meiner Textbox beibehalten, wenn sie wie die Farbe der Zeile deaktiviert ist ("#E0E4E5").

Was ich als nächstes tat, ist:

I Eigenschaft AlternatingRowBackground="#E0E4E5" rudern und als ich diese Farbe als Zeile Hintergrundfarbe erhalten.

Danach habe ich nächstes tat, ich Stil für meine Textbox gemacht, weil standardmäßig ein in wpf sieht nicht schön, es einige Schatten etc hat, ist so hier meine benutzerdefinierten Stil für Textbox:

<Style x:Key="TextBoxStyle1" TargetType="{x:Type TextBox}"> 
     <Style.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="#E0E4E5" /> 
       <Setter Property="BorderBrush" Value="#E0E4E5" /> 
       <Setter Property="BorderThickness" Value="1.5" /> 
      </Trigger> 
     </Style.Triggers> 

     <Setter Property="BorderBrush" Value="#0091EA"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
     <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
     <Setter Property="Padding" Value="1"/> 
     <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
     <Setter Property="HorizontalContentAlignment" Value="Left"/> 
     <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
     <Setter Property="AllowDrop" Value="true"/> 
     <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
     <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type TextBox}"> 
        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
            Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
         <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="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Wie können Sie sehen Jungs gibt es dieses Stück Code (triger), das in Ordnung zu sagen, wenn Sie behindert sind lassen Sie Ihre Hintergrundfarbe so sein und BorderBrush so aussehen:

<Style.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="#E0E4E5" /> 
       <Setter Property="BorderBrush" Value="#E0E4E5" /> 
       <Setter Property="BorderThickness" Value="1.5" /> 
      </Trigger> 
     </Style.Triggers> 

So, hier ist Beispiel dafür, wie es aussieht :

enter image description here

Da es möglich ist, ich gleiche Farben auf beide „# E0E4E5“ angewendet, um zu sehen, aber obliviously verschieden sie sind, so Jungs wie könnte ich es so gemacht, wenn meine Textbox seine ist deaktiviert „# E0E4E5“ Werden < - Farbe ..

Und ich muss auch beachten, wenn ich Farbe für Border ändern, es funktioniert. Zum Beispiel stelle ich ihnen beiden Textbox und BorderBrush rot zu sein, wenn sie deaktiviert sind, und ich bekomme diese:

enter image description here

So änderte Grenze Pinsel auftragen, aber Hintergrund nicht.

Danke Jungs, Beifall

Antwort

1

die Setter im ControlTemplate entfernen, die die Background-SystemColors.ControlBrushKey setzt, wenn die TextBox deaktiviert ist:

<Style x:Key="TextBoxStyle1" TargetType="{x:Type TextBox}"> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" Value="#E0E4E5" /> 
      <Setter Property="BorderBrush" Value="#E0E4E5" /> 
      <Setter Property="BorderThickness" Value="1.5" /> 
     </Trigger> 
    </Style.Triggers> 

    <Setter Property="BorderBrush" Value="#0091EA"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
    <Setter Property="Padding" Value="1"/> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="AllowDrop" Value="true"/> 
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
    <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBox}"> 
       <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 
            Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
        <ScrollViewer x:Name="PART_ContentHost"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Wenn ich wpf Gott sehen kommentiert Ich weiß, dass es sein wird, bot ernsthaft ehrfürchtige Beobachtung. Vielen Dank Alter! :) –

Verwandte Themen