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


当前回答

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

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

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

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

其他回答

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

虽然Orion Edwards Answer适用于任何情况,但每次想要这样做时,添加边界和设置边界的属性可能是一件痛苦的事情。另一个快速的方法是设置文本块的填充:

<TextBlock Height="22" Padding="3" />

我发现修改文本框的样式(即:controltemplate),然后修改part_contentthost垂直对齐到中心将做的技巧

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

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

你可以使用标签而不是文本块。

<Label Content="Hello, World!">
    <Label.LayoutTransform>
        <RotateTransform Angle="270"/>
    </Label.LayoutTransform>
</Label>