Canvas переопределяет значение TextAlignment TextBlock внутри него - PullRequest
3 голосов
/ 04 мая 2011

Эй, ребята, Я пытаюсь настроить TextAlignment TextBlock, который является потомком Canvas. Я понял, что в сетке TextAlignment работает, но когда в Canvas вы не можете настройте его как центр.

Я действительно надеюсь, что кто-то сможет помочь и пролить свет на эту тему!

спасибо

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Относительно простое решение - обернуть ваш TextBlock в StackPanel по ширине и установить для горизонтального выравнивания TextBlock значение Center.Это отцентрирует текст в StackPanel.

Ширина является важной частью.Без ширины текстовый блок не знал бы, сколько в нем места, и, следовательно, как центрировать себя.

1 голос
/ 04 мая 2011

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...