我如何分配垂直中心对齐到文本块内的文本?我发现TextAlignment属性,但它是水平文本对齐。我怎么做垂直文本对齐?


当前回答

如果你可以忽略TextBlock的高度,你最好使用这个:

<TextBlock Height="{Binding}" Text="Your text"
TextWrapping="Wrap" VerticalAlignment="Center" Width="28"/>

其他回答

我发现我必须做一些不同的事情。我的问题是,如果我改变字体大小,文本将在文本框中向上移动,而不是保持在底部与其余的文本框在一行。通过改变从上到下的垂直对齐,我能够以编程方式将字体大小从20改为14并返回,保持文本的重心在底部,并保持整洁。方法如下:

TextBlock不支持垂直文本对齐。

我通过用网格包装文本块并设置horizontalalign ="Stretch"和verticalalign ="Center"来解决这个问题。

是这样的:

<Grid>
    <TextBlock 
        HorizontalAlignment="Stretch"
        VerticalAlignment="Center"
        Text="Your text" />
</Grid>

如果你可以不使用文本包装,我认为用标签替换TextBlock是最简洁的方法。否则,从其他有效答案中选择一个。

<Label Content="Some Text" VerticalAlignment="Center"/>

对我来说,VerticalAlignment=“中心”修复了这个问题。 这可能是因为textblock被包装在一个网格中,但实际上是wpf中的一切。

一个文本块本身不能做垂直对齐

最好的方法,这样做,我发现是把文本块内的边界,所以边界为您对齐。

<Border BorderBrush="{x:Null}" Height="50">
    <TextBlock TextWrapping="Wrap" Text="Some Text" VerticalAlignment="Center"/>
</Border>

注意:这在功能上等同于使用网格,它只是取决于你想让控件如何与你的布局的其余部分相适应,以确定哪个更适合