【问题标题】:Silverlight 3 TextBlock leaves blank space above textSilverlight 3 TextBlock 在文本上方留下空白
【发布时间】:2009-12-18 16:47:15
【问题描述】:

我的 XAML 中有以下内容:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition Height="7"/>
        <RowDefinition Height="57"/>
    </Grid.RowDefinitions>

    <TextBlock Grid.Row="0" FontSize="18">Title Text</TextBlock>

    <Rectangle Grid.Row="1" Margin="0,2" Height="3" HorizontalAlignment="Stretch" Fill="#ff000000"/>

    <Border Grid.Row="2" Margin="0" Padding="0" BorderBrush="Black" BorderThickness="1">
        <TextBlock Margin="0" Padding="0" FontSize="55">123</TextBlock>
    </Border>
</Grid>

问题是底部TextBlock中的文字上方有一个空格(大约10px)。我似乎只能通过使用小得多的字体来摆脱这个空间。

有人知道为什么会出现这个空间,我能做些什么吗?

谢谢。

【问题讨论】:

    标签: wpf silverlight textblock


    【解决方案1】:

    我相信这是因为 TextBlock 上的默认 VerticalAlignment 是 Stretch。尝试将其设置为中心:

    <TextBlock Margin="0" Padding="0" FontSize="55" VerticalAlignment="Center">123</TextBlock>
    

    如果你真的需要将它向上推,你可以添加一个负的上边距。

    【讨论】:

    • 这确实解决了问题。奇怪,因为我曾尝试将 VerticalAlignment 设置为“Top”,但这并没有解决问题。你知道为什么“顶部”不起作用,而“中心”起作用吗?
    • "Top" 如果您的网格中的底行是 300 像素而不是 57 像素,则实际上似乎可以工作。因为底行小于 TextBlock 的实际高度(因为字体大小较大),所以无论空间如何,Center 都会将其垂直居中于该行上方。如果底行不是固定大小,并且您仍然希望它始终保持在顶部,则必须将其设置为 VerticalAlignment="Top" 且上边距为 -15px 左右才能达到相同的效果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多