我使用单独项目作为我的样式a,我有一些代码如下:
<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}"
但是当我在 Lable 元素
中使用以下代码时<Label Style="{ms:MyStyleRef ResourceKey=NazaninFont}" x:Name="LabelRemainingSec" Content="{Binding RemainingSec}"/>
我有:
FontFamily
在属性面板上的 IRNazanin 上设置,但在设计器中没有更正字体视图!BUT
FontFamily
设置在 Tahoma (窗口字体)我也是这样测试的:
我在单独的项目中添加了一个基于我的字体样式的样式,在我的窗口顶部,如下所示:
<Style x:Key="NazaninFont" BasedOn="{ms:MyStyleRef ResourceKey=NazaninFont}" TargetType="Label"/>
然后我在我的Lable normaly中使用它:
<Label Style="{StaticResource NazaninFont}" x:Name="LabelRemainingSec" Content="{Binding RemainingSec}"/>
结果与以前的方式相同:
Design Time
中的FontFamily
位于 IRNazanin 上,并且在XAML设计器中没有更正字体视图!在Run Time
中,它位于 Tahoma
您如何看待我的问题?我认为我的样式无法正确地给出Label
控件的字体路径。
答案 0 :(得分:0)
这可能是也可能不是你所追求的,但我会猜测它是:p
您可以在资源字典中定义FontFamily资源,也可以在任何您想要的地方定义。请注意我在Window.Resources中如何定义它。
我已将项目中的物理字体文件包含在名为“fonts”的文件夹中(不需要打包),并使用字体名称:值引用它。通过双击字体文件(显示整堆演示文本和安装选项)可以找到它。 您不使用文件本身的名称,在引用时使用字体名称:值。另外,不要忘记任何字体引用开头的#! :)
然后,像对待任何其他字体系列资源一样调用它
两个标签都是不同的字体。请注意,遗憾的是,在设计期间,只有在运行时才会看到字体更改。
工作代码作为演示:
<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>