Я наткнулся на это, которое, кажется, прекрасно работает:
<Grid>
<TextBlock Text="My Centered Text"
TextAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
Сетка гарантирует, что отдельный TextBox внутри нее заполняет отдельную ячейку в сетке, а VerticalAlignment в TextBlock обеспечивает центрирование текста в пределах чем.
Просто расположите / выровняйте текст по горизонтали, как вам нужно (приведенный выше фрагмент также центрирует его по этой оси, но изменение этого значения не приводит к изменению вертикального центрирования).