嘿家伙, 我试图配置一个TextBlock的TextAlignment,它是一个Canvas的子项。 我意识到在一个网格TextAlignment的作品,但是当你在画布上你不能 配置为中心。画布覆盖TextBlock内部的TextAlignment值
我真的很希望有人能够帮助解释这个话题!
感谢
嘿家伙, 我试图配置一个TextBlock的TextAlignment,它是一个Canvas的子项。 我意识到在一个网格TextAlignment的作品,但是当你在画布上你不能 配置为中心。画布覆盖TextBlock内部的TextAlignment值
我真的很希望有人能够帮助解释这个话题!
感谢
一个相对简单的解决方法是用一个宽度包裹在一个StackPanel你的TextBlock,与文本块的的HorizontalAlignment设置为中心。这会将文本居中在StackPanel中。
宽度是重要的部分。如果没有宽度,TextBlock不知道它有多少空间,因此不知道如何居中。
画布将始终将它的子元素作为“所需的大小”。所以如果你的TextBlock需要100个像素宽来显示它的文本,那么Canvas会给它100个像素。另一方面,网格可以给TextBlock留出更多或更少的空间,具体取决于TextBlock所在的列/行。
对于单行文本(即没有新行),TextAlignment唯一进入的时间是当TextBlock给出更多(或更少,如果启用TextWrapping)空间比它需要。
对于多行文本(或者在文本包装单行的情况下),则TextAlignment会将其文本与TextBlock的边界对齐。
由于Canvas永远不会强制一个TextBlock进行换行,所以TextAlignment唯一一次进入时会有多行文本。
<Canvas Width="300" Height="50">
<TextBlock Canvas.Top="0" TextAlignment="Center">
This will not center
</TextBlock>
<TextBlock Canvas.Top="25" TextAlignment="Center">
This will center the shorter<LineBreak />lines of text
</TextBlock>
</Canvas>