WPF文本框中的垂直对齐

Posted

技术标签:

【中文标题】WPF文本框中的垂直对齐【英文标题】:Vertical Align in WPF TextBox 【发布时间】:2011-05-26 02:06:40 【问题描述】:

我的 wpf 应用程序中有 2 个TextBoxes,一个用于用户名,另一个用于密码,两者都有FontSize=20,但文本显示如下:

我该如何解决这个问题?

Xaml:

<TextBox Grid.Row="1" Grid.Column="1" Height="40" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Text="test" />
<PasswordBox Grid.Row="3" Grid.Column="1" Height="40" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Password="test" />

【问题讨论】:

你用的是什么字体?可能是因为这个。 我没有指定任何内容,但我认为它默认为“Segoe UI”,但我更改了它但它保持不变 【参考方案1】:

要将TextBox 中的文本垂直居中,请使用VerticalContentAlignment 属性:

<TextBox Text="The text" Height="40" VerticalContentAlignment="Center" />

【讨论】:

VerticalContentAlignment = VerticalAlignment.Center;【参考方案2】:

这是因为您明确指定了 FontSize 属性以及 Height。具有较大 FontSize 的文本无法适应给定的高度。 所以,有几个解决方案

    将 TextBox 的高度增加到 60(但这会创建一个高高的 TextBox,在 UI 中可能看起来不太好)。或者,您可以跳过 Height 属性,以便它自动占用所需的最小空间。
    <TextBox Grid.Row="1"
             Grid.Column="1"
             BorderThickness="1" 
             BorderBrush="#FFD5D5D5" 
             FontSize="36" 
             Text="test" />
    减小FontSize,使文本可以适合高度为40的TextBox
    <TextBox Grid.Row="1"
             Grid.Column="1"
             Height="40"
             BorderThickness="1" 
             BorderBrush="#FFD5D5D5" 
             FontSize="24" 
             Text="test" />

【讨论】:

【参考方案3】:

调整这些控件的Padding 属性,例如Padding="0":

<TextBox Grid.Row="1" Grid.Column="1" Height="40" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Text="test" Padding="0" />  
<PasswordBox Grid.Row="3" Grid.Column="1" Height="40" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Password="test" Padding="0" />

或者,不要设置Height 属性,而是让控件根据其内容的高度自动调整大小:

<TextBox Grid.Row="1" Grid.Column="1" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Text="test" />
<PasswordBox Grid.Row="3" Grid.Column="1" BorderThickness="1" BorderBrush="#FFD5D5D5" FontSize="36" Password="test" />

【讨论】:

【参考方案4】:

您已将明确的 Height 设置为 40 给这些 TextBox 控件。

请删除它,让他们有足够的空间来显示他们的内容。

<TextBox Grid.Row="1"
            Grid.Column="1"
            BorderThickness="1"
            BorderBrush="#FFD5D5D5"
            FontSize="36"
            Text="test" />
<PasswordBox Grid.Row="3"
                Grid.Column="1"
                BorderThickness="1"
                BorderBrush="#FFD5D5D5"
                FontSize="36"
                Password="test" />

【讨论】:

以上是关于WPF文本框中的垂直对齐的主要内容,如果未能解决你的问题,请参考以下文章

如何垂直对齐颜色框中的文本? [复制]

我想在选择框中垂直对齐文本

wps演示怎么把文本框居中对齐

我如何使所有文本框在wpf中对齐在同一垂直位置?

如何让word文本框中的文字垂直上下居中

垂直对齐底部 div 与不同大小的文本