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 的文本显示在此元素中。
我在 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 的文本显示在此元素中。