WPF:如何调整禁用文本框的样式?

WPF:如何调整禁用文本框的样式?,wpf,input,textbox,styles,Wpf,Input,Textbox,Styles,如果我想更改所有已禁用文本框的背景色--使其更明显地处于禁用状态--我该怎么做?我特别想将它们更改为深灰色,但一般来说,关于禁用输入的样式设置的回答是可以的。禁用的颜色没有显示样式属性,因此您必须修改。要更改背景色,您应该可以只复制粘贴,然后修改一个笔刷: <Color x:Key="DisabledControlLightColor">#FFE8EDF9</Color> #FFE8EDF9 编辑通过“复制粘贴”,我的意思是您必须将整个样式复制粘贴到您的资源中: &

如果我想更改所有已禁用文本框的背景色--使其更明显地处于禁用状态--我该怎么做?我特别想将它们更改为深灰色,但一般来说,关于禁用输入的样式设置的回答是可以的。

禁用的颜色没有显示样式属性,因此您必须修改。要更改背景色,您应该可以只复制粘贴,然后修改一个笔刷:

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

编辑通过“复制粘贴”,我的意思是您必须将整个样式复制粘贴到您的资源中:

<!--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>

粉红色
#FFE8EDF9
#FFC5CBF9
#FF7381F9
#FFC5CBF9
#FF888888
#FFC5CBF9
#FFDDDD
白色
#FF7381F9
#FF211AA9
#FF3843C4
#FF211AA9
#FF4444
sc#1,0.004391443,0.00242815,0.242281124
#FFCCCC
#FF888888
#FF4444
#FF888888
#FF4444
#FFAAAAAA
#FF888888
黑色
#FFC5CBF9
黑色
#FFC5CBF9
#FF3843C4

如果您想要一个快速解决方案,而无需重新设置整个控件的模板:-

<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>


我试着把它放在下面,但没用。我必须把它嵌套在文本框样式下吗?@Doug我应该说得更清楚一点——“StaticResource”引用首先检查本地键。这意味着您必须将整个内容复制粘贴到您的资源中。如果您准确地解释了在何处插入此文本,对于WPF初学者将非常有用。