51 votes

Alignement vertical dans une TextBox WPF

J'en ai deux. TextBox es dans mon application wpf, une pour le nom d'utilisateur et l'autre pour le mot de passe, les deux ont FontSize=20 mais le texte apparaît comme ceci :

alt text

Comment puis-je réparer cela ?

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

0 votes

Quelle police utilisez-vous ? Cela peut être dû à cela.

0 votes

Je n'en ai pas spécifié, mais je pense qu'il s'agit par défaut de "Segoe UI", mais je l'ai changé mais il reste le même.

158voto

Tal Segal Points 423

Pour centrer verticalement le texte dans un TextBox utiliser le VerticalContentAlignment propriété :

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

0 votes

O VerticalContentAlignment = VerticalAlignment.Center;

31voto

Donut Points 32892

Ajustez le Padding les propriétés de ces contrôles, par exemple 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" />

Ou bien, ne définissez pas l'option Height et laissent plutôt les contrôles se dimensionner automatiquement en fonction de la hauteur de leur contenu :

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

2voto

decyclone Points 18778

Vous avez donné explicitement Height réglé sur 40 à ces TextBox contrôles.

Veuillez le supprimer et laissez-les prendre suffisamment d'espace pour montrer leur contenu.

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

0voto

Zuhaib Points 1

La raison en est que vous avez spécifié l'option FontSize ainsi que la propriété Hauteur de manière explicite. Le texte dont la taille de police est plus grande ne peut pas tenir dans la hauteur donnée. Il y a donc deux solutions à ce problème

  1. Augmentez la hauteur de la TextBox à 60 (mais cela créera une TextBox haute qui peut ne pas être belle dans l'interface utilisateur). Ou bien, vous pouvez simplement ignorer la propriété Height, de sorte qu'elle prendra automatiquement l'espace minimum dont elle a besoin.

    <TextBox Grid.Row="1"
             Grid.Column="1"
             BorderThickness="1" 
             BorderBrush="#FFD5D5D5" 
             FontSize="36" 
             Text="test" />
  2. Réduire FontSize, de sorte que le texte puisse tenir dans la TextBox de hauteur 40

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X