从我发现的 msdn 答案中:
我想出的最佳解决方法是在 TextBox 上应用逆变换并根据变换比例更改 FontSize。您可以使用 Grid 包装 TextBox 以保持其布局。
可以使用下面的代码来看看效果。此示例中的 FontSize 被硬编码为 10。您可以使用 DataBinding 将其绑定到 scaletransform 并使用转换器来计算字体大小。
<Grid Background="AliceBlue">
<StackPanel>
<Border Height="100">
<Canvas>
<TextBox Canvas.Left="50" Canvas.Top="40" Width="500" Height="100" Background="Silver" Text="A Quick Red Fox Jumped Over A Lazy Brown Dog." FontSize="20"/>
<Canvas.RenderTransform>
<ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
</Canvas.RenderTransform>
</Canvas>
</Border>
<Border Height="100">
<Canvas>
<Grid Canvas.Left="50" Canvas.Top="40" Width="500" Height="100">
<TextBox Background="Silver" Text="A Quick Red Fox Jumped Over A Lazy Brown Dog." FontSize="10" LayoutTransform="{Binding ElementName=scale, Path=Inverse}"/>
</Grid>
<Canvas.RenderTransform>
<ScaleTransform x:Name="scale" ScaleX="0.5" ScaleY="0.5"/>
</Canvas.RenderTransform>
</Canvas>
</Border>
您可以在此处查看完整主题:http ://social.msdn.microsoft.com/Forums/en/wpf/thread/aeaa3e28-a7da-4208-9676-771231c1a954?prof=required