Вот способ вставить '\ n' после каждого символа в тексте TextBlock, чтобы он отображался вертикально:
<TextBlock x:Name="VertTextBlock" Text="Vertical Text" Loaded="VertTextBlock_Loaded"></TextBlock>
Затем в обработчике событий Loaded вы говорите:
TextBlock tb = sender as TextBlock;
StringBuilder sb = new StringBuilder(tb.Text);
int len = tb.Text.Length * 2;
for (int i = 1; i < len; i += 2)
{
sb.Insert(i, '\n');
}
tb.Text = sb.ToString();
Это решение было предложено Lette, но я считаю, что моя реализация требует меньших затрат.