Вы можете растянуть текст с помощью окна просмотра.
Я рекомендую использовать пользовательский элемент управления для инкапсуляции всей вашей разметки для подобных вещей. У вас должно быть много тысяч этих вещей, прежде чем накладные расходы на пользовательский элемент управления против построения прямоугольников и прочего будут значительными.
Я создал этот пользовательский элемент управления:
Height="18" Width="24">
<Border BorderBrush="Black"
BorderThickness="1"
Background="Magenta"
>
<Viewbox Stretch="Uniform">
<TextBlock Text="{Binding Tag, RelativeSource={RelativeSource AncestorType=UserControl}}"
TextAlignment="Center"
Margin="2"
/>
</Viewbox>
</Border>
</UserControl>
* 1007 вы хотите с точки зрения ширины, высоты или чего-то еще.
Вы можете создать один из них, установить его тег, холст сверху и слева и добавить его на холст.
Вот эквивалентная разметка I использовали, чтобы доказать это:
Title="MainWindow" >
<Grid>
<Canvas>
<local:StationView Canvas.Left="20"
Canvas.Top="100"
Tag="16B"/>
</Canvas>
</Grid>
</Window>