2013-11-01 21 views
4

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

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

这可能是什么原因造成的?我正在使用VS 2010和Silverlight 5.

+2

您必须按CTRL +或放大! – Sajeetharan

+0

@Sajeetharan这只是受影响的字体 - 只是*一些*。图像/表格不受影响。此外,这发生在应用程序部署到的任何机器上。 – TarkaDaal

+0

检查你的Windows字体大小!这可能是原因 – Sajeetharan

回答

2

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

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

0

检查是否存在任何Transforms

+0

如果有变换,那么它为什么会在设计时出现不同? – RobSiklos

+0

好吧,不一定,但它们可能会在运行时受到绑定或故事板的影响。至少,转换是我解释为什么所有检测工具都不显示意外字体大小值的唯一方法。 – Benjamin

+0

@Benjamin我已经使用了Silverlight Spy并通过源代码:改变项目中的任何转换不会改变字体的大小,所以我不相信这是它。谢谢你。 – TarkaDaal

0

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

这个整理我出去

<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>