我真的希望有人可以提供帮助,并对这个话题有所了解!
感谢
答案 0 :(得分:2)
一个相对简单的解决方案是将TextBlock包装在具有宽度的StackPanel中,并将TextBlock的HorizontalAlignment设置为Center。这将使文本在StackPanel中居中。
宽度是重要的部分。没有宽度,TextBlock就不知道它有多少空间,因此不知道如何居中。
答案 1 :(得分:1)
Canvas将始终为其子元素提供“所需大小”。因此,如果你的TextBlock需要100像素宽来显示它的文本,那么Canvas将给它准确的100像素。另一方面,Grid可以为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>