如何在Windows Universal应用程序中使用自定义字体?

时间:2014-05-31 14:46:58

标签: c# xaml fonts windows-phone-8.1 win-universal-app

就像我的其他Windows Phone 8项目一样,我想使用自定义字体。但是使用新的通用应用程序架构,我很难将其付诸实施。

我在共享项目中创建了一个“Fonts”文件夹,我将带有Build Action属性的字体文件添加到“Content”。

我还在共享项目中创建了一个“Themes”文件夹,并为其添加了一个ResourceDictionnary(“Generic.xaml”)。

我添加了FontFamily资源:

<FontFamily x:Key="RexBoldFontFamily">/Fonts/Rex Bold.otf#Rex Bold</FontFamily>

我在App.xaml中引用了它:

<Application.Resources>

    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Themes/Generic.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="true" />

    </ResourceDictionary>

</Application.Resources>

在我的Windows Phone项目的MainPage.xaml中,我尝试使用它:

<TextBlock Text="{Binding HelloWorld}" Foreground="{ThemeResource RedBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="{StaticResource RexBoldFontFamily}" FontSize="22"/>

我确定这是字体的名称,因为这适用于我的一个Windows手机应用程序。所有这些都很好,因为它适用于色彩资源。

任何人都成功共享字体并使用它,

2 个答案:

答案 0 :(得分:15)

你做得很好,除了字体名称('#'之后的部分)。它似乎是Rex,而不是Rex Bold。

<FontFamily x:Key="RexBoldFontFamily">/Fonts/Rex Bold.otf#Rex</FontFamily>

答案 1 :(得分:4)

在ur xaml中使用此代码

<TextBlock x:Name="txtblk" HorizontalAlignment="Left" TextWrapping="Wrap" FontFamily="Assets/filename.ttf#Font Name"/>