WPF 使用.ttf文件中的图标失败

   本章讲述问题:WPF 使用.ttf文件中的图标失败,变成白框问题。

    在WPF开发过程中,我们需要使用.ttf文件中的图标和文字,但是经常会遇到类似问题:WPF 在XMAL里增加图标字体时没办法实时显示出来只显示一个小方框,影响我们观察实际效果,但运行后界面显示却是正常的。

我们先看一下效果图

 非正常的界面如下:

显示正常的界面如下:

**************************************************************************************************************

本示例中,WPF查看和使用.ttf文件中的字体和图标步骤如下:

一、在项目中添加字体图标文件的使用,层次结构如下图

二、设置.ttf文件属性,生成操作设置为资源(Resource)类型

三:在项目App.xaml中,添加字体文件的引用,代码如下:

<Application.Resources><FontFamily x:Key="iconfont">Resources/Fonts/#iconfont</FontFamily><FontFamily x:Key="bl">Resources/Fonts/#Bahnschrift Light</FontFamily>
</Application.Resources>

四:使用文件字体样式引用示例:

<Style TargetType="Button" x:Key="MenuButtonStyle"><Setter Property="VerticalAlignment" Value="Bottom"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="Button"><Grid Background="Transparent"><Grid.RowDefinitions><RowDefinition/><RowDefinition Height="22"/></Grid.RowDefinitions><TextBlock Text="{TemplateBinding Tag}"VerticalAlignment="Center" HorizontalAlignment="Center"FontFamily="{StaticResource iconfont}" FontSize="26"Margin="0,5" Foreground="#4F4644"/><TextBlock Text="{TemplateBinding Content}" Grid.Row="1" HorizontalAlignment="Center" FontSize="11"Foreground="#664F4644"/></Grid></ControlTemplate></Setter.Value></Setter>
</Style><Button Content="首页" Grid.Column="1" Style="{StaticResource MenuButtonStyle}"Tag="&#xe608;" CommandParameter="FirstView">
</Button>

代码编写完后,发现图标显示不出来但是运行时,显示正常。 

**************************************************************************************************************

我们从一下两个方面排查:

(1)引用图标的路径对不对。如果路径不对,你程序运行的时候,也不会显示图标。

(2)创建的项目中有没有中文字,或者标识符。

(3)引用资源的类型不正确。

排查上述三点都是符合的,这就不经思考起来,难道引用的路径还是存在问题?

于是乎,就修改了一下资源的引用声明

 专门使用Pack Uri:

<Application.Resources><FontFamily x:Key="iconfont">pack://application:,,,/WPFControlStyle;component/Resources/Fonts/#iconfont</FontFamily><FontFamily x:Key="bl">pack://application:,,,/WPFControlStyle;component/Resources/Fonts/#Bahnschrift Light</FontFamily>
</Application.Resources>

<Application.Resources><FontFamily x:Key="iconfont">/WPFControlStyle;component/Resources/Fonts/#iconfont</FontFamily><FontFamily x:Key="bl">/WPFControlStyle;component/Resources/Fonts/#Bahnschrift Light</FontFamily>
</Application.Resources>

或 使用相对路径,前导有“/”
在其他情况下,文件未声明为内容类型(例如,必须作为资源嵌入到程序集中的图像,或者必须从网络加载的文件)涉及语法变化,这里是资源类型,使用“Resources/Fonts/#iconfont”是不合适的,故在xaml设计界面上不显示图标。

<Application.Resources><FontFamily x:Key="iconfont">/Resources/Fonts/#iconfont</FontFamily><FontFamily x:Key="bl">/Resources/Fonts/#Bahnschrift Light</FontFamily>
</Application.Resources>

修改之后,在xaml设计界面图标显示就正常了。

在此做个笔记,以防后面遇到同样的问题,一时想不到原因和解决方法。

**************************************************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/193930.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】-进程间通信-匿名管道通信(以及模拟一个进程池)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

hyperledger fabric2.4测试网络添加组织数量

!!!修改内容比较繁琐,预期未来提供模板修改 修改初始配置文件,初始添加3个组织 organizations文件夹 /cryptogen文件夹下创建文件crypto-config-org3.yaml,内容如下: PeerOrgs:# ---------------------------------------------------------------------------# Org3# ----…

获取每个部门中当前员工薪水最高的相关信息

个人网站 首发于公众号小肖学数据分析 描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息&#xff0c;给出dept_no, emp_no以及其对应的salary&#xff0c;按照部门编号dept_no升序排列&#xff0c;以上例子输出…

NSSCTF第13页(2)

[HNCTF 2022 Week1]Challenge__rce 提示?hint 访问看到了源码 <?php error_reporting(0); if (isset($_GET[hint])) { highlight_file(__FILE__); } if (isset($_POST[rce])) { $rce $_POST[rce]; if (strlen($rce) < 120) { if (is_string($rce…

比Postman强在哪里

Postman的受众对象主要是广大开发人员&#xff0c;调测使用&#xff0c;它并不能完全满足专业测试人员需求&#xff0c;而自动化测试平台可以 1&#xff0c;Postman&#xff0c;Jmter是单机版软件&#xff0c;类似打游戏你和电脑PK&#xff0c;而很多时候是要联网和其他人团队作…

Go 语言中切片的使用和理解

切片与数组类似&#xff0c;但更强大和灵活。与数组一样&#xff0c;切片也用于在单个变量中存储相同类型的多个值。然而&#xff0c;与数组不同的是&#xff0c;切片的长度可以根据需要增长和缩小。在 Go 中&#xff0c;有几种创建切片的方法&#xff1a; 使用[]datatype{val…

Python 如何实现备忘录设计模式?什么是备忘录设计模式?Python 备忘录设计模式示例代码

什么是备忘录&#xff08;Memento&#xff09;设计模式&#xff1f; 备忘录&#xff08;Memento&#xff09;设计模式是一种行为型设计模式&#xff0c;用于捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态&#xff0c;以便在需要时恢复对象到先前的状态。这种模…

R语言的入门学习

目录 准备工作导入csv数据集选择前200行作为数据集展示数据集的前/后几N行宏观分析删除缺失值构建直方图导出为图片 R语言常见图像类型例1&#xff1a;散点图例2&#xff1a;散点矩阵图 准备工作 安装教程&#xff1a; R语言和RStudio的下载安装&#xff08;非常简便舒适&…

mysql优化之explain 以及 索引优化

Mysql安装文档参考&#xff1a;https://blog.csdn.net/yougoule/article/details/56680952 Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句&#xff0c;分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字&#xff0c;MySQL 会在查询上设…

MattML

方法 作者未提供代码

day07_数组初识

数组的概述 数组就是用于存储数据的长度固定的容器&#xff0c;保证多个数据的数据类型要一致。 数组适合做一批同种类型数据的存储 数组是属于引用数据类型&#xff0c; 数组变量名中存储的数组在内存中的地址信息。 数组中的元素可以是基本数据类型&#xff0c;也可以是引用…

Linux | 信号

目录 前言 一、信号基础概念 1、生活中的信号 2、Linux中的信号 二、信号的产生 1、接口介绍 2、信号产生的方式 &#xff08;1&#xff09;终端按键的方式产生信号 &#xff08;2&#xff09;系统调用接口 a、kill b、raise c、abort &#xff08;3&#xff09…