1

我为我的样式使用了一个单独的项目,并且我有一些这样的代码行:

<ResourceDictionary
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    >

    <Style x:Key="NazaninFont"  TargetType="Control">
        <Setter Property="FontFamily" Value="pack://application:,,,/Extra/Fonts/#IRNazanin"/>
    </Style>

    ......

</ResourceDictionary> 

当我在元素中使用我的样式键时,我的另一种样式(如控制效果和......)效果很好,如下所示:

Style="{ms:MyStyleRef ResourceKey=MyStyleKey}"

但是当我在我的标签元素中使用以下代码时

<Label Style="{ms:MyStyleRef ResourceKey=NazaninFont}" x:Name="LabelRemainingSec" Content="{Binding RemainingSec}"/>

我有:

  • 在设计时间>>在属性面板上的IRNazaninFontFamily上设置但在设计器中没有正确的字体视图

  • 在运行时 >>在TahomaFontFamily上设置(窗口字体)

我也是这样测试的:

我在我的窗口顶部的单独项目中添加了基于我的字体样式的样式,如下所示:

<Style x:Key="NazaninFont" BasedOn="{ms:MyStyleRef ResourceKey=NazaninFont}" TargetType="Label"/>

然后我在我的标签中正常使用它:

<Label Style="{StaticResource NazaninFont}" x:Name="LabelRemainingSec" Content="{Binding RemainingSec}"/>

结果与以前的方式相同:

Design TimeFontFamily是关于IRNazanin并且在 XAML 设计器中没有正确的字体视图!Run Time它在塔霍马

你觉得我的问题怎么样?我认为我的样式无法Label正确地为控件提供字体路径。

4

1 回答 1

1

这可能是也可能不是你所追求的,但我猜它是:p

您可以在资源字典中定义 FontFamily 资源,或者在您真正想要的任何地方。注意我是如何在 Window.Resources 中定义它的。

我已将物理字体文件包含在我的项目中名为“字体”的文件夹中(无需打包),并使用字体名称引用它:值。这可以通过双击字体文件(它显示一整堆演示文本和安装选项)来找到。您不使用文件本身的名称,而是使用 Font name: 引用时的值。另外,不要忘记任何字体参考开头的#!:)

然后,像调用字体系列的任何其他资源一样调用它

两个标签将是不同的字体。请注意,不幸的是,字体更改在设计时不可见,仅在运行时可见。

工作代码作为演示:

<Window x:Class="Tinker.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="400" Width="500">
    <Window.Resources>
        <FontFamily x:Key="MyFont">fonts/#Roboto Thin</FontFamily> 
    </Window.Resources>
    <StackPanel VerticalAlignment="Top">
        <Label FontSize="36" Content="Helloooooo World!"/>
        <Label FontSize="36" FontFamily="{StaticResource MyFont}" Content="Helloooooo World!"/>
    </StackPanel>
</Window>
于 2015-02-13T14:16:41.577 回答