2013-11-01 47 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>