代码之家  ›  专栏  ›  技术社区  ›  Thomas Flinkow

WPF触发器文本框边框笔刷不工作

  •  1
  • Thomas Flinkow  · 技术社区  · 9 年前

    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>
    

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

    我尝试了解决方案,说我应该尝试设置 BorderThickness 0.99 1.01 如前所述 here here 但它们不适合我。

    非常感谢您的帮助。

    1 回复  |  直到 9 年前
        1
  •  5
  •   Tom C.    9 年前

    发生了什么事 TextBoxBase 有一些触发器 IsFocused ,因此您的触发器被默认触发器覆盖。

    您应该修改 模板并将触发器放在那里以实现您想要的:

    <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>
    
    推荐文章