在resourceDictionary中添加字体系列

本文关键字:字体 系列 添加 resourceDictionary | 更新日期: 2023-09-27 18:27:43

我正在使用msdn教程在我的Wpf应用程序中添加一个FontFamily,在.csproj中我有:

  <ItemGroup>
    <Resource Include="Resources'MetaOT-Norm.otf" />
    <Resource Include="Resources'MetaOT-Bold.otf" />
  </ItemGroup>

我在ResourceDictionary中添加了字体家族,如下所示:

<FontFamily x:Key="FontMetaOT">./Resources/#Meta OT</FontFamily>

但它并不适用。。。(我试过使用windows字体目录中的字体文件,效果很好)。知道吗?

在resourceDictionary中添加字体系列

如果使用的是资源字典文件,则必须使用Pack URI Scheme对文件进行寻址。例如:

以下示例显示XAML资源文件的包URI位于引用程序集的项目文件夹的根目录中。

pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml

以下示例显示XAML资源文件的包URI位于被引用程序集的项目文件夹的子文件夹中。

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml

以下示例显示XAML资源文件的包URI位于引用的、特定于版本的根文件夹中程序集的项目文件夹。

pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml

如果文件位于输出文件夹中,您可以使用原始站点来引用它:

以下示例显示源XAML站点的包URI文件,存储在可执行程序集所在的位置启动。

pack://siteoforigin:,,,/SiteOfOriginFile.xaml

以下示例显示源XAML站点的包URI文件,存储在相对于其所在位置的子文件夹中启动应用程序的可执行程序集。

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml

例如:

    <UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!--A resource dictionary in the output folder in the Assets folder-->
            <ResourceDictionary Source="pack://siteoforigin:,,,/Assets/OpenIconsDictionary.xaml"/>
            <!--A resource dictionary packed in the Gui dll-->
            <ResourceDictionary Source="pack://application:,,,/Gui;component/Assets/PackedIconsDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
</UserControl.Resources>

<!--In the output folder /Assets/OpenIconsDictionary.xaml (Build Action: Embedded Resource, Copy always)-->
<ResourceDictionary
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage x:Key="Icon"                 
                 UriSource="pack://siteoforigin:,,,/Images/image.png"/>

</ResourceDictionary>

<!--In Gui.dll in the folder /Assets/PackedIconsDictionary.xaml (Build Action: Page, Do not copy)-->
<ResourceDictionary
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <BitmapImage x:Key="Icon"                 
                 UriSource="pack://siteoforigin:,,,/Images/image.png"/>

</ResourceDictionary>