WPF TextBox控件中文字实现垂直居中

当TextBox纵向长度较长且文字字体小,文字默认不垂直居中。TextBox虽无直接属性调整垂直对齐,但因其继承Control,可通过修改Template实现。通过设置样式并指定ContentHost,可以解决这个问题。内容宿主元素必须是ScrollViewer或AdornerDecorator,并标记为PART_ContentHost。
部署运行你感兴趣的模型镜像

项目中的问题:

TextBox纵向长度比较长但文字字体比较小的时候,在输入时就会发现文字不是垂直居中的。

而使用中我们发现,TextBox虽然可以设置文字的水平对齐方式,但却没有相应的属性让我们来调节他的垂直对齐方式。好在TextBox继承自Control类,可以通过修改Template模板来改变他的属性样式(TextBlock继承自FrameworkElement,不可进行模板编辑)。

<Style x:Key="Test_TextBox" TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border" Width="Auto" Height="Auto" BorderThickness="1" BorderBrush="#FF7F9DB9">
<Grid x:Name="grid" Background="#FFFFFF">
<ScrollViewer x:Name="PART_ContentHost" VerticalAlignment="Center" HorizontalAlignment="Left"/>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

最后应用一下样式可以了。

PS:

内容宿主 是用来呈现 TextBox 内容的元素。TextBox 的 ControlTemplate 必须仅包含一个标记为内容宿主元素的元素。 若要将某个元素标记为内容宿主,应为它指定特殊名称 PART_ContentHost。 内容宿主元素必须为 ScrollViewer 或 AdornerDecorator。 内容宿主元素可能不会承载任何子元素。

本文链接地址为http://blog.youkuaiyun.com/wushang923/article/details/6590302

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 Windows Forms 开发中,TextBox 控件是用于文本输入和显示的常用控件,但它默认支持文字垂直居中显示。为了实现这一功能,开发者可以通过继承 TextBox 类来自定义一个控件,比如创建一个名为 MyTextBox 的类。这个自定义控件仅能让文字垂直居中,还能在启用自动折行(WordWrap=True)时保持垂直居中效果。 自定义控件实现通常涉及继承一个现有控件(如 System.Windows.Forms.TextBox),并在新类中添加或修改功能。以 MyTextBox.cs 文件为例,它可能包含如下代码: 在 OnPaint 方法中,开发者需要计算文本的大小和位置,确保文本在 TextBox垂直居中。这通常需要借助 TextRenderer 类和 Graphics 对象进行测量和绘图操作。 此外,MyTextBox.Designer.cs 文件由 Visual Studio 自动生成,用于存储控件的属性、事件处理程序和设计时信息,例如控件的初始化代码以及在设计视图中设置的属性。而 MyTextBox.resx 文件是资源文件,用于存储控件的本地化字符串和其他资源,通常用于保存控件的元数据,如本地化文本或图标。 为了支持自动折行并保持垂直居中,开发者可能需要在 MyTextBox 类中添加额外逻辑。例如,当 WordWrap 属性设置为 True 时,文本框尺寸的变化会影响文本位置,因此需要在尺寸改变时重新计算并更新文本的绘制位置。 这个自定义控件实现展示了如何扩展 .NET Framework 的内置控件以满足特定界面需求。通过理解控件的生命周期、绘图机制以及如何响应状态变化,开发者可以创建出更符合用户界面设计要求的控件。这个案例对于学习 Windo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值