[英]WPF Trigger TextBox BorderBrush not working
当我尝试使用以下(简化的)样式为TextBox
设置不同的BorderBrush
时,它不起作用。
<Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
但是,如果不是设置其他的BorderBrush
而是尝试设置Background
(即<Setter Property="Background" Value="Red" />
),则它确实可以工作。
我尝试了一些解决方案,说我应该按照此处和此处所述,将BorderThickness
设置为0.99
或1.01
,但是它们对我不起作用。
任何帮助都将不胜感激。
这是因为TextBoxBase
有一些IsFocused
触发器,因此默认触发器将覆盖您的触发器。
您应该修改TextBoxBase
模板,并将触发器放置在那里以实现所需的功能:
<TextBox.Style>
<Style
TargetType="{x:Type TextBox}">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type TextBoxBase}">
<Border
x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<ScrollViewer
x:Name="PART_ContentHost"
Focusable="False"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden" />
</Border>
<ControlTemplate.Triggers>
<Trigger
Property="IsFocused"
Value="True">
<Setter
Property="BorderBrush"
Value="Red" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</TextBox.Style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.