【发布时间】:2016-12-31 17:09:48
【问题描述】:
我有所有文本框的默认样式。像这样的:
<Style TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="vaBorder" BorderThickness="1" CornerRadius="0" Padding="2,1,0,1"
BorderBrush="{TemplateBinding BorderBrush}">
<Grid>
<ScrollViewer x:Name="PART_ContentHost" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="vaBorder" Property="Background" Value="{DynamicResource {x:Static Themes:ResourceKeys.DisabledControlBackground}}"/>
<Setter TargetName="PART_ContentHost" Property="Opacity" Value="0.7"/>
</Trigger>
<Trigger Property="IsReadOnly" Value="True">
<Setter TargetName="vaBorder" Property="Background" Value="{DynamicResource {x:Static Themes:ResourceKeys.DisabledControlBackground}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
如您所见,当 TextBox IsReadOnly 属性设置为 True 时,有一个触发器会更改 vaBorder 控件的背景。
我在我的页面上放置了一个 TextBox 控件,但对于这个特定页面,我希望 TextBox 内的那个 vaBorder 控件的背景是不同的颜色加上使文本不透明。
是否可以通过以某种方式覆盖样式触发器来做到这一点,还是我需要创建新样式并从头开始覆盖整个模板?
【问题讨论】: