WPF - Добавить пользовательский шрифт

Я пытаюсь добавить пользовательский шрифт в качестве ресурса в моем приложении. У меня есть каталог "CustomFont" в приложении, и все шрифты внутри него установлены на "Ресурс"

<Window.Resources>
    <Style x:Key="Gotham-XLight">
        <Setter Property="TextElement.FontFamily" 
                Value="/CustomFonts;Component/#Gotham-XLight" />
    </Style>
</Window.Resources>

И тогда на моем TextBlock у меня есть это: (внутри сетки)

<TextBlock x:Name="TimeTextBlock" Style="{DynamicResource Gotham-XLight}" 
           TextAlignment="Center" FontSize="25" FontWeight="Bold" 
           Foreground="White" Text="TextBlockTimer" 
           Margin="105,242.974,0,226.975" HorizontalAlignment="Left" 
           Width="221.919" />

Но я не вижу свой шрифт, как говорят люди. Я делаю что-то неправильно?

11.12.2008 05:21:13
4 ОТВЕТА
РЕШЕНИЕ

Вы можете проверить имя шрифта, вам нужно указать имя шрифта, а не имя файла.

Дважды щелкните файл шрифта, и на нем должно появиться «Имя шрифта», это то, что вы хотите убедиться, что указано в вашем стиле.

19
11.12.2008 05:58:34

Попробуй это

<Window.Resources>
    <Style x:Key="Gotham-XLight">
        <Setter Property="TextElement.FontFamily" Value="CustomFonts/#Gotham-XLight" />
    </Style>
</Window.Resources>

Также, если вы не планируете менять стиль во время выполнения, {StaticResource Gotham-XLight}это будет намного более производительным.

6
11.12.2008 05:33:34
Я не мог заставить его работать {StaticResource StyleName}и должен был вернуться к нему {DynamicResource StyleName}после того, как понял, в чем проблема.
Dinei 20.01.2016 12:13:46

В xaml я сделал это так:

    <Button Grid.Column="1" Grid.RowSpan="2" Name="start" Margin="5" Click="start_Click">
        <TextBlock Name="test" FontFamily="pack://application:,,,/Y_Yoga;Component/Resources/#FontAwesome">&#xF04B;</TextBlock>
    </Button>

Однако я не знаю, является ли #FontAwesome встроенным именем шрифта или это результат, который я переименовал в файл .ttf.

Надеюсь быть полезным!

2
24.05.2013 10:20:02
Попытка понять синтаксис пакета: что представляет собой Y_Yoga?
Andrew Shepherd 6.06.2013 01:04:46
Это просто пользовательское имя приложения. Поэтому путь должен выглядеть следующим образом: FontFamily = "pack: // application: ,,, / <YOUR_APP_NAME_HERE>; Компонент / Resources / # <YOUR_FONT_NAME_HERE>"
sdd 11.06.2013 16:29:21

Поздний ответ, но стоит упомянуть. Чтобы добавить собственный шрифт, который будет применяться глобально в вашем окне, вы можете добавить его в свой файл csproj, чтобы включить шрифты из папки Fonts вашего проекта в качестве ресурсов.

 <ItemGroup>
    <Resource Include="Fonts\*.ttf" />
 </ItemGroup>

Затем в вашем окне XAML вы можете указать FontFamily в части Window:

<Window x:Class="Namespace.MainWindow"
    ...
    FontFamily="/Fonts/#[FONT NAME]"
    Title="">
  <Grid>
    ...
  </Grid>
</Window>

Я надеюсь, что это может кому-то помочь, так как я потратил некоторое время, чтобы понять это.

0
11.02.2020 14:37:32