设计器中的字体与运行时的字体大小不同

时间:2013-11-01 09:54:32

标签: c# silverlight fonts

我有一个Silverlight OOB应用程序。一些TextBlocks(但不是全部)开始表现得很奇怪。在Designer中查看时,它们的大小与我想要的大小相同。当我运行该应用程序时,它们的大小大约为1pt。

我用Silverlight Spy检查了它,字体大小/重量与设计时相同。如果我在设计模式下使字体太小,它们在运行时会出现正确的大小。如果我使用Silverlight Spy使它们在运行时太小,它们看起来大小合适。 Silverlight Spy显示TextBlocks不受样式影响。

可能导致这种情况的原因是什么?我正在使用VS 2010和Silverlight 5。

3 个答案:

答案 0 :(得分:2)

如果我观察到WPF或Silverlight中字体渲染的差异,几乎总是由于FontFamily不同而不是FontSize。如果可以,请使用Silverlight Spy验证字体系列实际上是相同的。

有趣的是,即使有效字体系列相同,也可能存在差异。在我们的一个应用程序中,我们使用复合FontFamily定义,对大多数西方字形范围使用Segoe UI,但希腊字形范围的衬线字体可以更好地区分这些字符(这是一个财务应用程序)。我注意到编辑器中的行高与运行时应用程序中的行高略有不同。看起来编辑器并不总是正确地应用复合字体(或者在某些VS2012更新之前没有)。

答案 1 :(得分:0)

检查是否存在Transforms

答案 2 :(得分:0)

我遇到了标签,按钮和复选框的问题。看一下使用WPF检查器之后,我注意到上面每个文本中的文本都包含一个TextBlock来显示实际文本,我已经将文本块的默认FontSize设置为13覆盖我为(例如)Label指定的值。

这将我排除在外

<ControlTemplate x:Key="LabelTemplate" TargeType="Label">
    <TextBlock Text="{TemplateBinding Content}" FontSize="{TemplateBinding FontSize}" />
</ControlTemplate>


<Style TargetType="{x:Type Label}">
    <Setter ... etc. etc. other styling I had already in here />
    <Setter Property="Template" Value="{StaticResource LabelTemplate}" />
</Style>