WPF XAML 文本框在应用控件模板后不可编辑

WPF XAML TextBox not editable after applying Control Template

我在 WPF 中有一个 TextBox,我试图在鼠标悬停在 TextBox 上时更改边框颜色。根据我在 WPF 中使用其他元素的经验,我需要将带有 TemplateBinding 的 ControlTemplate 值插入到我尝试动态更改的值中。但是,当我应用它时,该框变得不可编辑(并且文本消失)。如果我删除模板 setter,该框再次变为可编辑状态,但自定义 BorderBrush 触发器不起作用。

样式如下:

<Style x:Key="TextBoxBase" TargetType="TextBox">
    <Setter Property="FontSize" Value="30"/>
    <Setter Property="Background" Value="{StaticResource BrushLightGrey}"/>
    <Setter Property="Foreground" Value="{StaticResource BrushNormalText}"/>
    <Setter Property="IsReadOnly" Value="False"/>
    <Setter Property="Height" Value="40"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TextBox}">
                <Border BorderBrush="{TemplateBinding BorderBrush}">
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderBrush" Value="{StaticResource BrushBlue}"/>
        </Trigger>
    </Style.Triggers>
    <Style.Resources>
        <Style TargetType="{x:Type Border}">
            <Setter Property="CornerRadius" Value="5"/>
        </Style>
    </Style.Resources>
</Style>

如有任何建议或帮助,我们将不胜感激。谢谢

你错过了关键部分:

      <ScrollViewer Margin="0"
                    x:Name="PART_ContentHost" />

这是承载文本的内容。

https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/textbox-styles-and-templates

文本框部件 以下 table 列出了 TextBox 控件的命名部分。

文本框部分 零件类型说明 PART_ContentHost FrameworkElement 可以包含 FrameworkElement 的可视元素。 TextBox 的文本显示在此元素中。