2014-10-02 16 views
0

如果我想更改所有禁用文本框的背景顏色 - 使其更明顯,它們被禁用 - 我將如何做到這一點?我想特別將它們改爲深灰色,但關於DISABLED輸入的樣式的答案通常很好。WPF:如何調整禁用文本框的樣式?

回答

1

如果你想有一個快速的解決方案,而無需重新模板的整個控制: -

<Style TargetType="TextBox"> 
    <Style.Triggers> 
    <Trigger Property="IsEnabled" Value="false"> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TextBox"> 
      <Border Background="LightGray" BorderBrush="Gray" BorderThickness="1"> 
       <TextBlock Text="{TemplateBinding Text}" Padding="2" /> 
      </Border> 
      </ControlTemplate> 
     </Setter.Value> 
     </Setter> 
    </Trigger> 
    </Style.Triggers> 
</Style> 
+0

喜歡它。謝謝。 – Doug 2014-10-03 18:59:48

+0

如果您準確解釋了插入此文本的位置,它對於WPF初學者會非常有用。 – user45623 2015-07-07 03:12:34

0

沒有顯示禁用顏色的樣式屬性 - 所以您將不得不修改default ControlTemplate。要更改背景顏色,它看起來像你應該能夠只是複製粘貼,修改一個刷:

<Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color> 

編輯通過「複製 - 粘貼」,我的意思是,你必須整體風格複製粘貼到你的資源:

<!--Control colors.--> 
<Color x:Key="DisabledControlLightColor">Pink</Color> <!-- #FFE8EDF9--> 


<Color x:Key="WindowColor">#FFE8EDF9</Color> 
<Color x:Key="ContentAreaColorLight">#FFC5CBF9</Color> 
<Color x:Key="ContentAreaColorDark">#FF7381F9</Color> 

<Color x:Key="DisabledControlDarkColor">#FFC5CBF9</Color> 
<Color x:Key="DisabledForegroundColor">#FF888888</Color> 

<Color x:Key="SelectedBackgroundColor">#FFC5CBF9</Color> 
<Color x:Key="SelectedUnfocusedColor">#FFDDDDDD</Color> 

<Color x:Key="ControlLightColor">White</Color> 
<Color x:Key="ControlMediumColor">#FF7381F9</Color> 
<Color x:Key="ControlDarkColor">#FF211AA9</Color> 

<Color x:Key="ControlMouseOverColor">#FF3843C4</Color> 
<Color x:Key="ControlPressedColor">#FF211AA9</Color> 


<Color x:Key="GlyphColor">#FF444444</Color> 
<Color x:Key="GlyphMouseOver">sc#1, 0.004391443, 0.002428215, 0.242281124</Color> 

<!--Border colors--> 
<Color x:Key="BorderLightColor">#FFCCCCCC</Color> 
<Color x:Key="BorderMediumColor">#FF888888</Color> 
<Color x:Key="BorderDarkColor">#FF444444</Color> 

<Color x:Key="PressedBorderLightColor">#FF888888</Color> 
<Color x:Key="PressedBorderDarkColor">#FF444444</Color> 

<Color x:Key="DisabledBorderLightColor">#FFAAAAAA</Color> 
<Color x:Key="DisabledBorderDarkColor">#FF888888</Color> 

<Color x:Key="DefaultBorderBrushDarkColor">Black</Color> 

<!--Control-specific resources.--> 
<Color x:Key="HeaderTopColor">#FFC5CBF9</Color> 
<Color x:Key="DatagridCurrentCellBorderColor">Black</Color> 
<Color x:Key="SliderTrackDarkColor">#FFC5CBF9</Color> 

<Color x:Key="NavButtonFrameColor">#FF3843C4</Color> 

<LinearGradientBrush x:Key="MenuPopupBrush" 
       EndPoint="0.5,1" 
       StartPoint="0.5,0"> 
    <GradientStop Color="{DynamicResource ControlLightColor}" 
      Offset="0" /> 
    <GradientStop Color="{DynamicResource ControlMediumColor}" 
      Offset="0.5" /> 
    <GradientStop Color="{DynamicResource ControlLightColor}" 
      Offset="1" /> 
</LinearGradientBrush> 

<LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill" 
       StartPoint="0,0" 
       EndPoint="1,0"> 
    <LinearGradientBrush.GradientStops> 
     <GradientStopCollection> 
      <GradientStop Color="#000000FF" 
       Offset="0" /> 
      <GradientStop Color="#600000FF" 
       Offset="0.4" /> 
      <GradientStop Color="#600000FF" 
       Offset="0.6" /> 
      <GradientStop Color="#000000FF" 
       Offset="1" /> 
     </GradientStopCollection> 
    </LinearGradientBrush.GradientStops> 
</LinearGradientBrush> 

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="SnapsToDevicePixels" 
     Value="True" /> 
    <Setter Property="OverridesDefaultStyle" 
     Value="True" /> 
    <Setter Property="KeyboardNavigation.TabNavigation" 
     Value="None" /> 
    <Setter Property="FocusVisualStyle" 
     Value="{x:Null}" /> 
    <Setter Property="MinWidth" 
     Value="120" /> 
    <Setter Property="MinHeight" 
     Value="20" /> 
    <Setter Property="AllowDrop" 
     Value="true" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type TextBoxBase}"> 
       <Border Name="Border" 
      CornerRadius="2" 
      Padding="2" 
      BorderThickness="1"> 
        <Border.Background> 
         <SolidColorBrush Color="{DynamicResource ControlLightColor}" /> 
        </Border.Background> 
        <Border.BorderBrush> 
         <SolidColorBrush Color="{DynamicResource BorderMediumColor}" /> 
        </Border.BorderBrush> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal" /> 
          <VisualState x:Name="Disabled"> 
           <Storyboard> 
            <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border" 
              Storyboard.TargetProperty="(Panel.Background). 
       (SolidColorBrush.Color)"> 
             <EasingColorKeyFrame KeyTime="0" 
            Value="{StaticResource DisabledControlLightColor}" /> 
            </ColorAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="ReadOnly"> 
           <Storyboard> 
            <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border" 
              Storyboard.TargetProperty="(Panel.Background). 
       (SolidColorBrush.Color)"> 
             <EasingColorKeyFrame KeyTime="0" 
            Value="{StaticResource DisabledControlDarkColor}" /> 
            </ColorAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="MouseOver" /> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <ScrollViewer Margin="0" 
        x:Name="PART_ContentHost" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

我試着把這個放在下面,但它不起作用。我必須將它嵌入文本框樣式或其他東西? – Doug 2014-10-02 23:39:44

+0

@Doug我應該做得更清楚 - 「StaticResource」引用首先檢查本地鍵。這意味着你必須將整個東西複製粘貼到資源中。 – McGarnagle 2014-10-02 23:46:21