WPF TextBox中的垂直对齐

55

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

alt text

我该如何解决这个问题?

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" />

你用的是什么字体?可能是因为这个原因。 - Donut
我没有指定任何字体,但我认为它默认为"Segoe UI",但我已经更改了它,但它仍然保持不变。 - 開発者
5个回答

169

要垂直居中文本在一个TextBox中,使用VerticalContentAlignment属性:

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

VerticalContentAlignment = VerticalAlignment.Center;VerticalContentAlignment = VerticalAlignment.Center; - Gray Programmerz

32

调整这些控件的 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" />

2
你已经给这些文本框控件明确设置了高度为40。请移除它并让它们占据足够的空间来显示其内容。
<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" />

1
这是因为您已经明确指定了FontSize属性和Height属性。具有较大FontSize的文本无法适应给定的高度。
因此,有几个解决方案:
  1. 将TextBox的高度增加到60(但这会创建一个高度较高的TextBox,可能在UI中看起来不好)。或者,您可以跳过Height属性,这样它将自动占用所需的最小空间。
    <TextBox Grid.Row="1"
             Grid.Column="1"
             BorderThickness="1" 
             BorderBrush="#FFD5D5D5" 
             FontSize="36" 
             Text="test" />
  1. 减小字体大小,使文本适合高度为40的文本框
    <TextBox Grid.Row="1"
             Grid.Column="1"
             Height="40"
             BorderThickness="1" 
             BorderBrush="#FFD5D5D5" 
             FontSize="24" 
             Text="test" />

0

在你的文本框中尝试使用 VerticalContentAlignment="Center"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接