如果我想更改所有禁用文本框的背景顏色 - 使其更明顯,它們被禁用 - 我將如何做到這一點?我想特別將它們改爲深灰色,但關於DISABLED輸入的樣式的答案通常很好。WPF:如何調整禁用文本框的樣式?
0
A
回答
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
沒有顯示禁用顏色的樣式屬性 - 所以您將不得不修改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
我試着把這個放在
+0
@Doug我應該做得更清楚 - 「StaticResource」引用首先檢查本地鍵。這意味着你必須將整個東西複製粘貼到資源中。 – McGarnagle 2014-10-02 23:46:21
相關問題
- 1. WPF:如何樣式或禁用文本框的默認文本菜單
- 2. WPF中的文本框標記樣式
- 3. 如何添加wxpython框架樣式來禁用框架調整大小
- 4. WPF文本框樣式拋出InvalidOperationException
- 5. 文本框 - 在wpf中編輯樣式
- 6. 如何自動調整wpf文本框的寬度?
- 7. 禁用WPF中的所有文本框
- 8. 如何在wpf datagrid中繼承默認的文本框樣式?
- 9. 如何在WPF中爲文本框和組合框應用相同的樣式?
- 10. 如何樣式禁用複選框?
- 11. 如何禁用文本框?
- 12. WPF/C#:禁用拖放文本框?
- 13. 如何改變文本框的禁用背景色WPF
- 14. 如何在WPF中的富文本框中禁用撤消?
- 15. WPF禁用帶樣式的Datagrid列
- 16. 禁用控件的DataGridTemplateColumn樣式WPF
- 17. 如何禁用WPF中用戶控件的大小調整
- 18. 在WPF中使用IDataErrorInfo設置文本框的樣式
- 19. 樣式默認文本菜單文本框在WPF
- 20. WPF - 如何禁用在文本框控件中拖放?
- 21. 當文本框被禁用時,css樣式不適用
- 22. 如何在WPF中調整「框架」?
- 23. WPF和文本格式的文本框
- 24. 文本框的樣式Silverlight
- 25. 使用ScrollBar調整文本框內容WPF
- 26. 自動調整大小禁用文本框
- 27. 如何禁用jquery中的文本框?
- 28. 如何禁用iframe中的文本框
- 29. 如何禁用文本框的選擇
- 30. 文本框文本格式從樣式
喜歡它。謝謝。 – Doug 2014-10-03 18:59:48
如果您準確解釋了插入此文本的位置,它對於WPF初學者會非常有用。 – user45623 2015-07-07 03:12:34