Если у вас есть TextBlock в Canvas, у вас будут проблемы с выравниванием, так как TextBlack будет помещен в 0,0 (верхний левый угол) внутри элемента управления canvas и (если вы не установили ширину явно) будет растянут, чтобы соответствоватьтекст содержал.В основном это означает, что ваш текст всегда будет выровнен по левому краю.
Элемент управления Canvas следует использовать только тогда, когда вам нужно установить точное положение содержащихся элементов.Если это не так, используйте другой контейнер, такой как Grid, StackPanel или даже просто ContentControl.
Удалите Canvas из вашего xaml, и он должен работать.
Чтобы уточнить горизонтальное выравнивание иTextAlignment: Если у вас есть ContentControl шириной 400px, и вы добавляете в него TextBlock шириной 200px с текстовым содержимым шириной 100px, то верно следующее:
- УстановкаГоризонтальное выравнивание по центру будет выравнивать TextBlock (шириной 200 пикселей) по центру ContentControl, но текст все равно будет выравниваться по левому краю внутри TextBlock.Это означает, что текст будет смещен на 100 пикселей слева.
- Если для TextAlignment установлено только Center, TextBlock будет выровнен по левому краю, а текст внутри будет центрирован.Это означает, что текст будет смещен на 50 пикселей слева.
По моему мнению, лучшая практика здесь - не устанавливать ширину, а просто установить свойство TextAlignment.Это будет означать (для большинства контейнеров), что TextBlock будет растянут на всю ширину контейнера, а текст внутри выровнен соответствующим образом.