当我 运行 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>
结果:
我正在尝试在我的 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>
结果: