WPF - Font Awesome значки не отображаются во время выполнения - PullRequest
0 голосов
/ 20 сентября 2019

Я создаю приложение WPF и хочу использовать иконки из Font Awesome.Я включил Font Awesome в стили и семейство шрифтов, указанное в полях, где я хочу его использовать.Проблема в том, что значки правильно отображаются в окне дизайна, но меняются на скрещенные квадраты во время выполнения.

Есть мои шрифты XAML

<FontFamily x:Key="ArconRegular">pack://application;,,,/Fonts/#Arcon</FontFamily>
    <FontFamily x:Key="ArconRounded">pack://application;,,,/Fonts/#Arcon Rounded-</FontFamily>
    <FontFamily x:Key="FASolid">pack://application;,,,/Fonts/#Font Awesome 5 Free Solid</FontFamily>

    <Style TargetType="{x:Type Control}" x:Key="BaseStyle">
        <Setter Property="FontFamily" Value="{StaticResource ArconRegular}"/>
    </Style>

    <Style TargetType="{x:Type TextBlock}" x:Key="BaseTextBlockStyle">
        <Setter Property="FontFamily" Value="{StaticResource ArconRegular}"/>
    </Style>

    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="{x:Type Label}" BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseStyle}"/>
    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource BaseTextBlockStyle}"/>
    <Style TargetType="{x:Type ListView}" BasedOn="{StaticResource BaseStyle}"/>

    <system:String x:Key="FAMinimizeIcon">&#xf2d1;</system:String>
    <system:String x:Key="FAMaximizeIcon">&#xf2d0;</system:String>
    <system:String x:Key="FACloseIcon">&#xf00d;</system:String>

Кнопки XAML (я хочу использовать значки на кнопках)

<Style TargetType="{x:Type Button}" x:Key="WindowControlButton" BasedOn="{StaticResource BaseStyle}">
        <Setter Property="FontFamily" Value="{StaticResource FASolid}"/>
        <Setter Property="WindowChrome.IsHitTestVisibleInChrome" Value="True"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Padding" Value="3"/>
        <Setter Property="Foreground" Value="{StaticResource ForegroundMainBrush}"/>
        <Setter Property="LayoutTransform">
            <Setter.Value>
                <ScaleTransform ScaleX="1.5"/>
            </Setter.Value>
        </Setter>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}">
                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{TemplateBinding Content}"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="{StaticResource BackgroundLightBrush}"/>
            </Trigger>
        </Style.Triggers>
    </Style>

И, наконец, MainWindow XAML (часть, где я хочу их использовать)

<!-- Window Buttons -->
<StackPanel Grid.Column="2" Orientation="Horizontal">
    <Button Style="{StaticResource WindowControlButton}" Content="{StaticResource FAMinimizeIcon}" Command="{Binding MinimizeCommand}"/>
    <Button Style="{StaticResource WindowControlButton}" Content="&#xf2d0;" Command="{Binding MaximizeCommand}"/>
    <Button Style="{StaticResource WindowCloseButton}" Content="&#xf00d;" Command="{Binding CloseCommand}"/>
</StackPanel>

Как видите, я попытался указать код значка в отдельной строке и использоватьStaticResource, но ничего не работает.

...