Tho*_*kow 0 wpf triggers textbox
当我尝试使用以下(简化)样式为其聚焦时设置不同时BorderBrush,TextBox它不起作用。
<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>
Run Code Online (Sandbox Code Playgroud)
但是,如果不是设置不同的BorderBrush我尝试设置Background(即<Setter Property="Background" Value="Red" />)它确实有效。
我尝试了解决方案,说我应该尝试将 设置BorderThickness为类似0.99或1.01如此处和此处所述的内容,但它们对我不起作用。
任何帮助都非常感谢。
小智 5
发生的事情是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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |