Reputation: 670
I have 2 TextBox
es in my wpf app, one for user name and other for password, both have FontSize=20
, but the text appears like this:
How can I fix this?
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" />
Upvotes: 55
Views: 65013
Reputation: 2835
To vertically center the text in a TextBox
use the VerticalContentAlignment
property:
<TextBox Text="The text" Height="40" VerticalContentAlignment="Center" />
Upvotes: 173
Reputation: 11
The reason for this is because you have specified the FontSize property as well as the Height explicitly. The text with the bigger FontSize cannot fit in the given height. So, there are a couple of solutions for this
<TextBox Grid.Row="1"
Grid.Column="1"
BorderThickness="1"
BorderBrush="#FFD5D5D5"
FontSize="36"
Text="test" />
<TextBox Grid.Row="1"
Grid.Column="1"
Height="40"
BorderThickness="1"
BorderBrush="#FFD5D5D5"
FontSize="24"
Text="test" />
Upvotes: 1
Reputation: 112895
Adjust the Padding
properties of these controls, e.g. 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" />
Or, don't set the Height
properties, and instead let the controls size themselves automatically based on the height of their content:
<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" />
Upvotes: 33
Reputation: 30840
You have given explicit Height
set to 40
to these TextBox
controls.
Please remove it and let them take enough space to show their content.
<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" />
Upvotes: 2