【问题标题】:Vertical Align in WPF TextBoxWPF文本框中的垂直对齐
【发布时间】: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”,但我更改了它但它保持不变

标签: wpf textbox font-size


【解决方案1】:

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

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

【讨论】:

  • VerticalContentAlignment = VerticalAlignment.Center;
【解决方案2】:

这是因为您明确指定了 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. 减小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" />
      

      【讨论】:

        猜你喜欢
        • 2016-08-10
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 2018-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多