Как мне изменить шрифт по умолчанию, используемый Silverlight?

#c# #silverlight #xaml #fonts #styles

#c# #silverlight #xaml #шрифты #стили

Вопрос:

Есть ли какой-либо способ изменить шрифт по умолчанию (переносимый пользовательский интерфейс), используемый Silverlight, на пользовательский шрифт без указания стиля для каждого отдельного элемента пользовательского интерфейса? Я хочу избежать необходимости явно задавать стиль или привязывать семейство шрифтов к статическому ресурсу.

Я полагаю, я могу использовать неявные стили, но тогда я должен делать это для КАЖДОГО типа элемента управления пользовательского интерфейса: кнопка, текстовый блок, текстовое поле и т.д. И т.п…

Я хотел бы просто добавить это в свой словарь стилей (но, конечно, это запрещено):

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

Ответ №1:

Если вы обернете все свое приложение с помощью ContentControl и укажете в нем его семейство шрифтов, если вы не укажете семейство шрифтов ни в одном из ваших дочерних элементов управления, шрифт должен распространяться на все из них.

Комментарии:

1. Спасибо, это работает. Мне также пришлось установить неявный стиль для ChildWindow (для модальных диалогов), потому что он не наследует семейство шрифтов.

Ответ №2:

Это то, что мы сделали:

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

Боюсь, он далек от совершенства.