C# WPF-从自定义字体显示符号时出现问题
我有一个自定义字体。字体包含特定地址的符号。我想在文本块中显示一个符号 字体ttf文件位于我的应用程序的“字体”文件夹中。我已经将字体包含在应用程序中,并将BuildAction设置为Resource XAML 我从字体中的特定地址加载符号 但是我的应用程序无法显示符号。相反,我看到了一个 这是我的密码。请注意样式和两个文本块 同样的问题 有什么问题吗C# WPF-从自定义字体显示符号时出现问题,c#,wpf,fonts,C#,Wpf,Fonts,我有一个自定义字体。字体包含特定地址的符号。我想在文本块中显示一个符号 字体ttf文件位于我的应用程序的“字体”文件夹中。我已经将字体包含在应用程序中,并将BuildAction设置为Resource XAML 我从字体中的特定地址加载符号 但是我的应用程序无法显示符号。相反,我看到了一个 这是我的密码。请注意样式和两个文本块 同样的问题 有什么问题吗 我也在我的计算机上安装了字体,但没有成功。我不确定这是否是问题的根本原因,但是,您是否可以尝试在您的样式中使用TargetType属性,如下所示
我也在我的计算机上安装了字体,但没有成功。我不确定这是否是问题的根本原因,但是,您是否可以尝试在您的样式中使用TargetType属性,如下所示:
<Window.Resources><Style x:Key="Foo" TargetType="TextBlock">
<Setter Property="FontFamily" Value="pack://application:,,,/Main;component/Fonts/#MyFont" />
</Style></Window.Resources>
您确定TextBlock正在使用吗?我会试试。如果你能在客户端电脑上安装字体,那么这是明智的。fontfamily的所有相对地址都存在内存泄漏。这是一个相对地址。除非您的url以c:\开头,否则它将是相对的。鉴于您有一个textblock,您正在显式设置样式,我认为将fontfamily定义为一个资源,并将textblock fontfamily直接设置为该资源,这将比您在那里所做的更清楚。TextElement.fontfamily肯定有效。确保MyFont实际上是字体名,Main是程序集的名称。或者只是写pack://application:,,,/Fonts/MyFont。正如我在问题中所写:字体的路径和名称应该是正确的。我已经检查过好几次了。
<Window x:Class="Main.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Main"
mc:Ignorable="d"
Loaded="Window_Loaded"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style x:Key="Foo">
<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/Main;component/Fonts/#GuardTools-Symbol-Bold" />
</Style>
</Window.Resources>
<StackPanel Orientation="Vertical">
<TextBlock Text="" Style="{StaticResource Foo}" />
<TextBlock FontFamily="Segoe MDL2 Assets" Text="" />
<TextBlock x:Name="txt" />
</StackPanel>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txt.FontFamily = new FontFamily("pack://application:,,,/Main;component/Fonts/#GuardTools-Symbol-Bold");
txt.Text = "\xe905"; // 
}
<Window.Resources><Style x:Key="Foo" TargetType="TextBlock">
<Setter Property="FontFamily" Value="pack://application:,,,/Main;component/Fonts/#MyFont" />
</Style></Window.Resources>