关于 wpf 控件:设置 wpf 文本框边框刷不工作的触发器

Trigger to set wpf textbox borderbrush not working

当文本框有焦点时,我试图在一个简单的文本框上设置背景边框。

这是我的风格

1
2
3
4
5
6
7
8
9
<Style x:Key="TextBoxStyle" TargetType="TextBox">
<Style.Triggers>
 <Trigger Property="IsFocused" Value="False">
  <Setter Property="BorderBrush" Value="Blue"/>
 </Trigger>
 <Trigger Property="IsFocused" Value="True">
   <Setter Property="BorderBrush" Value="Red"/>
   <!--<Setter Property="Background" Value="Red"/>-->
 </Trigger>

IsFocus = False 可以正常工作,但 true 的触发器不能正常工作。

我已经注释掉了背景设置器,但是如果我取消注释,我可以看到背景设置为红色。

当文本框有焦点时,我需要做些什么来改变边框颜色?

谢谢。


如果您的 BorderThickness 为 "1"(默认),那么您获得的焦点样式是标准 3D 控件之一。您可以使用 contenttemplate 重新设置控件的样式,但一个简单的(尽管不是最优雅的解决方案)将简单地将边框厚度设置为 "1" 以外的其他值,就像我在下面的示例中所做的那样。

1
2
3
4
5
6
7
8
9
10
11
<TextBox Width="200" Height="25" BorderThickness="0.99">
<TextBox.Style>
    <Style  TargetType="{x:Type TextBox}">
        <Setter Property="BorderBrush" Value="Red" />
        <Style.Triggers>
            <Trigger Property="IsFocused" Value="False">
                <Setter Property="BorderBrush"  Value="Blue" />
            </Trigger>
        </Style.Triggers>
    </Style>
</TextBox.Style>