WPF TextBox中的垂直对齐

时间:2010-12-15 17:50:29

标签: wpf textbox font-size

我的wpf应用中有2 TextBox个es,一个用于用户名,另一个用于密码,两者都有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" />

4 个答案:

答案 0 :(得分:121)

要使TextBox中的文本居中,请使用TextBox的VerticalContentAlignment属性。

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

答案 1 :(得分:19)

调整这些控件的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 :(得分:2)

您已将这些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" />

答案 3 :(得分:0)

之所以这样做,是因为您已明确指定 FontSize 属性和 Height 。 FontSize较大的文本不能适合给定的高度。 因此,有两种解决方案

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