WPF触发器TextBox BorderBrush无法正常工作

时间:2017-09-05 07:10:54

标签: 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>

但是,如果不是设置不同的BorderBrush,我会尝试例如设置Background(即<Setter Property="Background" Value="Red" />)确实有效。

我尝试了解决方案,说我应该尝试将BorderThickness设置为0.991.01,如herehere所述,但它们不起作用对我来说。

任何帮助都很高兴。

1 个答案:

答案 0 :(得分:4)

正在发生的事情是TextBoxBaseIsFocused的某些触发器,因此您的触发器会被默认触发器覆盖。

您应修改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>