当我 运行 Visual Studio 中的应用程序时字体重置为默认值 - WPF

Font resets to default when I run the app in Visual Studio - WPF

我正在尝试在我的 WPF 项目中使用自定义字体。问题是,当我 运行 应用程序显示默认字体时,即使在设计器中我看到了我选择的字体。有人可以解释为什么会这样吗?

MainWindow.xaml

<StackPanel Orientation="Vertical">

    <TextBlock
        Text="SEARCH"
        FontSize="26" 
        FontStyle="Normal" 
        FontWeight="Normal" 
        Foreground="#ffffff"
        Style="{StaticResource MontserratFS}"/>

    <TextBlock
        Text="SEARCH"
        FontSize="26" 
        FontStyle="Normal" 
        FontWeight="Normal"
        Foreground="#ffffff"
        FontFamily="/Fonts/#Montserrat"/>

</StackPanel>

App.xaml

<Application x:Class="Project001.App"      
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:Project001"
         StartupUri="MainWindow.xaml">

<Application.Resources>

    <Style x:Key="MontserratFS">
        <Setter Property="TextElement.FontFamily" 
        Value="/Fonts/#Montserrat"/>
    </Style>

    </Application.Resources>
</Application>

我在设计器中看到的:

我在 运行 应用程序时看到的内容:

如您所见,字体因某种原因重置为默认值。

您可以检查一下您的步骤是否与以下步骤一致。

1.Adding一个字体文件到Resources.resx(圈出的部分会自动出现)。

右键单击资源并将 Montserrat-Bold 重命名为 Montserrat。

项目和资源路径结构:

2.Right 单击 .ttf 文件,select 属性并将生成操作设置为资源:

3.Use TextBlock 中的样式并编写如下代码(两种方法):

Dictionary1.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <FontFamily x:Key="Font">pack://application:,,,/Resources/#Montserrat</FontFamily>
    <Style x:Key="tb_demo" TargetType="{x:Type TextBlock}">
        <Setter Property="FontFamily" Value="{StaticResource Font}"/>
    </Style>
</ResourceDictionary>

App.xaml:

 <Application.Resources>
        <ResourceDictionary Source="Dictionary1.xaml"/>
    </Application.Resources>

MainWindow.xaml:

<Window.Resources>
        <Style x:Key="font" TargetType="TextBlock">
            <Setter Property="FontFamily" Value="Resources/#Montserrat"/>
        </Style>
    </Window.Resources>

    <StackPanel>
        <TextBlock Text="SEARCH" Style="{StaticResource tb_demo}" />
        <TextBlock Text="SEARCH" Style="{DynamicResource font }" />
        <TextBlock Text="SEARCH" />
    </StackPanel>

结果: