包含的字体不会从 WPF 中的资源字典加载
Included font does not load from resource dictionary in WPF
在我的 WPF 应用程序中,我在 App.xaml
文件中包含了我正在使用的字体,如下所示:
<Application x:Class="STFAPP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:STFAPP"
StartupUri="Views/LoginWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<!--Included Fonts-->
<FontFamily x:Key="TheSans">pack://application:,,,/Style/Fonts/#TheSans</FontFamily>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/TextBlock.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
TextBlock.xaml
是包含 TextBlock
样式的资源字典:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type TextBlock}" x:Key="TitleStyle">
<Setter Property="FontFamily" Value="{StaticResource TheSans}" />
<Setter Property="FontSize" Value="15" />
</Style>
我在 TextBlock
中使用了如下样式:
<TextBlock Text="Hello" Style="{StaticResource TitleStyle}"/>
字体未加载!?
如果我避免使用单独的资源字典(TextBlock.xaml
文件)并将样式直接粘贴到 App.xaml
,字体将成功加载:
<Application x:Class="STFAPP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:STFAPP"
StartupUri="Views/LoginWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<!--Included Fonts-->
<FontFamily x:Key="TheSans">pack://application:,,,/Style/Fonts/#TheSans</FontFamily>
<Style TargetType="{x:Type TextBlock}" x:Key="TitleStyle">
<Setter Property="FontFamily" Value="{StaticResource TheSans}" />
<Setter Property="FontSize" Value="15" />
</Style>
</ResourceDictionary>
</Application.Resources>
我想将多个资源字典文件中的样式分开来组织我的应用程序文件。
如有任何帮助,我将不胜感激
在 Style
中更改为 DynamicResource
:
<Setter Property="FontFamily" Value="{DynamicResource TheSans}" />
或者将 FontFamily
资源移动到 TextBlock.xaml
或另一个资源字典,例如 Fonts.xaml
,并合并这个:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Fonts.xaml" />
<ResourceDictionary Source="Style/TextBlock.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
在我的 WPF 应用程序中,我在 App.xaml
文件中包含了我正在使用的字体,如下所示:
<Application x:Class="STFAPP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:STFAPP"
StartupUri="Views/LoginWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<!--Included Fonts-->
<FontFamily x:Key="TheSans">pack://application:,,,/Style/Fonts/#TheSans</FontFamily>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/TextBlock.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
TextBlock.xaml
是包含 TextBlock
样式的资源字典:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type TextBlock}" x:Key="TitleStyle">
<Setter Property="FontFamily" Value="{StaticResource TheSans}" />
<Setter Property="FontSize" Value="15" />
</Style>
我在 TextBlock
中使用了如下样式:
<TextBlock Text="Hello" Style="{StaticResource TitleStyle}"/>
字体未加载!?
如果我避免使用单独的资源字典(TextBlock.xaml
文件)并将样式直接粘贴到 App.xaml
,字体将成功加载:
<Application x:Class="STFAPP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:STFAPP"
StartupUri="Views/LoginWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<!--Included Fonts-->
<FontFamily x:Key="TheSans">pack://application:,,,/Style/Fonts/#TheSans</FontFamily>
<Style TargetType="{x:Type TextBlock}" x:Key="TitleStyle">
<Setter Property="FontFamily" Value="{StaticResource TheSans}" />
<Setter Property="FontSize" Value="15" />
</Style>
</ResourceDictionary>
</Application.Resources>
我想将多个资源字典文件中的样式分开来组织我的应用程序文件。
如有任何帮助,我将不胜感激
在 Style
中更改为 DynamicResource
:
<Setter Property="FontFamily" Value="{DynamicResource TheSans}" />
或者将 FontFamily
资源移动到 TextBlock.xaml
或另一个资源字典,例如 Fonts.xaml
,并合并这个:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Style/Fonts.xaml" />
<ResourceDictionary Source="Style/TextBlock.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>