5
votes

Is there any way to change the default font (Portable User Interface) used by Silverlight to a custom font without specifying a style for every single UI element? I want to avoid having to explicitly set a style or bind the FontFamily it to a static resource.

I suppose I can use implicit styles, but then I have to do it for EVERY UI control type: Button, TextBlock, TextBox, etc, etc...

I wish I could just add this to my Style Dictionary (but of course it's not allowed):

<FontFamily >"TCCEB.TTF#Tw Cen MT"</FontFamily> 
2

2 Answers

3
votes

If you wrap your entire application with a ContentControl and specify its FontFamily in there, as long as you don't specify the FontFamily in any of your child controls, the font should flow down to all of them.

0
votes

This is what we did:

<Application.Resources>
    <FontFamily x:Key="DefaultFontFamily">/MyName.MyApp;component/Assets/segoeui.ttf#Segoe UI</FontFamily>

    <Style TargetType="Button">
        <Setter Property="FontFamily" Value="{StaticResource DefaultFontFamily}"/>
        <Setter Property="FontSize" Value="14.666"/>
    </Style>

    <Style TargetType="HyperlinkButton">
        <Setter Property="FontFamily" Value="{StaticResource DefaultFontFamily}"/>
        <Setter Property="FontSize" Value="14.666"/>
    </Style>

    ...

</Application.Resources>

Far from perfect I'm afraid.