如何将TextBlock内的文本竖直居中对齐?我找到了TextAlignment属性,但它只能控制文本水平对齐方式。那么如何进行竖直方向上的文本对齐呢?
如何将TextBlock内的文本竖直居中对齐?我找到了TextAlignment属性,但它只能控制文本水平对齐方式。那么如何进行竖直方向上的文本对齐呢?
一个Textblock本身无法进行垂直对齐。
我发现最好的方法是将Textblock放入边框中,这样边框就可以为您实现对齐。
<Border BorderBrush="{x:Null}" Height="50">
<TextBlock TextWrapping="Wrap" Text="Some Text" VerticalAlignment="Center"/>
</Border>
注意: 这在功能上等同于使用网格,只是取决于您希望控件如何与布局结合,哪种方法更适合。
虽然Orion Edwards的回答适用于任何情况,但每次想要添加边框并设置边框属性时可能会很麻烦。另一种快速方法是设置文本块的填充:
<TextBlock Height="22" Padding="3" />
文本块不支持垂直文本对齐。
我通过使用Grid包装文本块,并设置HorizontalAlignment="Stretch"和VerticalAlignment="Center"来解决此问题。
像这样:
<Grid>
<TextBlock
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Text="Your text" />
</Grid>
Grid
内覆盖Ellipse
上的TextBlock
来实现。无需绑定宽度和高度属性或进行任何棘手的操作。 - paddy你可以使用标签(label)替代文本块(textblock)。
<Label Content="Hello, World!">
<Label.LayoutTransform>
<RotateTransform Angle="270"/>
</Label.LayoutTransform>
</Label>
TextBlock
不支持垂直对齐其内容。如果您必须使用TextBlock
,则必须相对于其父级进行对齐。
但是,如果您可以使用Label
(它们确实具有非常相似的功能),则可以定位文本内容:
<Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
I am centred text!
</Label>
Label
默认会拉伸以填满其边界,这意味着标签的文本将居中对齐。
如果您可以不使用文本包装,我认为用标签替换TextBlock是最简洁的方法。否则,请按照其他有效答案之一操作。
<Label Content="Some Text" VerticalAlignment="Center"/>
要实现您所说的内容,最好的方法是创建一个支持VerticalContentAlignment
的标签。
然后,如果您真的需要一些Label
不支持的TextBlock
属性,比如TextWrapping
,可以将一个TextBlock
放在Label
内部。
这样可以同时满足您的两个需求:VerticalContentAlignment
和TextWrapping
<Label
VerticalContentAlignment="Center">
<TextBlock
TextWrapping="WrapWithOverflow">
My text goes here!
</TextBlock>
<Label/>
VerticalAlignment="Center"
可以解决这个问题。TextBlock
被包含在一个网格中,但在wpf中几乎所有的东西都是如此。TextBlock
显示更加美观。<Border BorderThickness="3" BorderBrush="Yellow" CornerRadius="10" Padding="2"
HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="150">
<TextBlock FontSize="20" Height="23" HorizontalAlignment="Left" Margin="0,0,0,-5" Text="" VerticalAlignment="Top" Width="141" Background="White" />
</Border>
Margin="0,0,0,-5"
我发现修改文本框样式(即controltemplate
)并将PART_ContentHost
的垂直对齐方式更改为中心对齐会解决问题。
TextAlignment
只影响水平对齐,而不是垂直对齐(正如问题所指)。 - Drew Noakes