Я использовал подход, предложенный Kreol, и обнаружил, что он работает, за исключением того, что некоторые буквы шире других.
При использовании UniformGrid каждый столбец имеет одинаковую ширину по определению. Это приводит к переменному интервалу между буквами.
Вместо этого я использовал стековую панель с горизонтальной ориентацией и левое поле для каждого элемента:
<Grid>
<ItemsControl ItemsSource="{Binding SomeString}" HorizontalAlignment="Center" VerticalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Control.Margin" Value="1,0,0,0"/>
<Setter Property="Control.Foreground" Value="#1E395B"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>