2010-09-13 38 views
2

爲整個Silverlight應用程序增加字體大小的最佳方法是什麼?Silverlight和Overall FontSize

+0

您是指創作時的默認大小,還是僅僅是整個應用程序的顯示大小(運行時)? – 2010-09-13 15:00:51

回答

3

Control class爲您提供了FontSize屬性,因此如果您設置了基本樣式,其他樣式可以從此繼承。或者你可以像下面的代碼所示的那樣普遍設置它。 UserControlContentControl無論從Control繼承,所以你可以把一個定義你的App.xaml:

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="Prototype.App" 
      > 
    <Application.Resources> 
     <Style TargetType="Control" x:Key="DefaultStyle"> 
      <Setter Property="FontSize" Value="24"/> 
     </Style> 
    </Application.Resources> 
</Application> 

然後你的頁面:

<UserControl x:Class="HermesPrototype.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    Style="{StaticResource DefaultStyle}"  
    > 

    <Grid x:Name="LayoutRoot" Background="White"> 
     <StackPanel> 
      <TextBlock Text="Hello world" /> 
      <TextBox Text="Edit me"/> 
     </StackPanel> 
    </Grid> 
</UserControl> 

通知的Style屬性在用戶控件。這可能有缺點,但我不確定。

+0

它只允許在整個應用程序中使用單個字體(這在實際應用程序中似乎不會發生),所以我們放棄了樣式解決方案(對我自己的解決方案也不滿意)。仍然很高興知道風格可以附加在一個子課程級別。 – 2010-09-13 16:01:12

3

如果您希望在整個應用程序中應用全局字體大小增加,我所知道的唯一方法是使用縮放rendertransform放大最頂端的XAML窗口,但您還必須調整實際大小以補償,以便整體應用程序大小不會改變。

例如如果將外殼縮小10%以獲得10%更大的字體,則必須將縮放的高度和寬度減少10%,以便仍然適合相同的區域,只需放大內容即可。

這一切都假設您已經在星型網格行/列內構建了視圖和子視圖,以便行和列保持相同的相對大小。

(或者,您可以動態運行visualroot並隨時更改字體大小,但這不是一種很好的方法)。

如果你有更多關於你試圖解決的實際問題的信息會有所幫助。

希望這會有所幫助。