WPF之资源专题
1.一般程序的资源可以分为四个等级:
- 数据库中的数据相当于放在仓库里
- 资源文件里的数据相当于放在旅行箱里
- WPF对象资源里的数据相当于携带在背包里
- 变量中的数据相当于拿在手里
2.资源的查找顺序是沿着逻辑树向上一级控件查找,如果连顶级容器都没有就会去程序级Application.Resources中查找;如果还是没有找到则会抛出异常。
3.静态资源(StaticResource)和动态资源(DynamicResource)
- 静态资源是在程序载入内存时对资源的一次性使用,之后就不会再去访问这个资源了。
- 动态资源是程序运行过程中仍然会区访问资源。
<Window.Resources>
<TextBlock x:Key="str1" Text="海内存知己" />
<TextBlock x:Key="str2" Text="海内存知己" />
</Window.Resources>
<Grid>
<StackPanel>
<Button x:Name="btn1" Content="{StaticResource str1}" Height="60"/>
<Button x:Name="btn2" Content="{DynamicResource str2}" Height="60"/>
<Button x:Name="update" Margin="10" Width="120" Content="更新资源" Click="update_Click"/>
</StackPanel>
</Grid>
/// <summary>
/// 更新资源
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void update_Click(object sender, RoutedEventArgs e)
{
this.Resources["str1"] = new TextBlock() { Text = "天涯若比邻" };
this.Resources["str2"] = new TextBlock() { Text = "天涯若比邻" };
}
4.程序中添加二进制资源(程序级资源),这个在Net FrameWork体系下大家很熟悉了,就不做说明了
5.WPF中的Pack Uri,这里重点说明下《引用程序集的资源文件》
编译到引用的程序集中的资源文件的 pack URI 使用以下授权和路径:
授权:application:///。
路径:编译到所引用程序集内的资源文件的名称。 路径必须符合以下格式:
AssemblyShortName{;版本] {;PublicKey]; 组件/路径
程序集短名称:所引用的程序集的短名称。
;版本 [可选]:所引用的包含资源文件的程序集的版本。 此部分在加载两个或多个具有相同短名称的引用程序集时使用。
;公钥 [可选]:用于对引用程序集进行签名的公钥。 此部分在加载两个或多个具有相同短名称的引用程序集时使用。
;组件:指定所引用的程序集是从本地程序集引用的。
/路径:资源文件的名称,包括其相对于所引用程序集的项目文件夹根目录的路径。
下面的示例演示一个资源文件的 pack URI XAML ,该资源文件位于所引用程序集的项目文件夹的根目录中。
pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml
下面的示例演示一个资源文件的 pack URI XAML ,该资源文件位于所引用程序集的项目文件夹的子文件夹中。
pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml
下面的示例演示一个资源文件的 pack URI,该 XAML 资源文件位于所引用的特定于版本的程序集的项目文件夹的根文件夹中。
pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml
请注意,所引用的程序集资源文件的 pack URI 语法只能与 application:///机构一起使用。 例如,WPF 不支持以下。
pack://siteoforigin:,,,/SomeAssembly;component/ResourceFile.xaml
5.2 标记中的绝对 Pack URI

5.3 标记中的相对 Pack URI

5.4 更多详细说明请阅读官方文档:https://docs.microsoft.com/zh-cn/dotnet/desktop/wpf/app-development/pack-uris-in-wpf?view=netframeworkdesktop-4.8#pack-uri-resolution
WPF之资源专题的更多相关文章
- WPF之资源字典zz
最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...
- WPF 之 资源(Resource)
1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. ...
- WPF 中资源路径的问题
WPF 中资源路径的问题 1. 引用当前工程的资源(注意xxxx.png的build action 应设置为Resource 或Embedded Resource) <ImageBrush Im ...
- WPF样式资源文件简单运用
WPF通过资源来保存一些可以被重复利用的样式,下面的示例展示了简单的资源样式文件的使用: 一.xaml中定义资源及简单的引用 <Window.Resources > <!--wpf窗 ...
- WPF 访问资源中的Storyboard
原文:WPF 访问资源中的Storyboard <UserControl.Resources> <Storyboard x:Key="testStoryboard" ...
- WPF学习资源整理
WPF(WindowsPresentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的编程模型 ...
- WPF 调用资源图片
原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...
- WPF - 资源收集
原文:WPF - 资源收集 OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅.此篇文章将不断更新,感兴趣的可以看看,也欢 ...
- WPF 为资源字典 添加事件响应的后台类
原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...
随机推荐
- rabbitMQ重复消费(结合死循环重发那一篇看)
/** * 重复消费逻辑判断与处理 */ @Component public class RepeatMqConsumer { /** * 服务对象 */ private int count=1; @ ...
- 关于通用Mapper new Example使用记录
关于通用MapperExample使用记录 环境准备 需要集成 mybatis 的 generator 插件,方便自动生成 实体类和 mapper 类,还可以生成xml,不过一般我们都不用 xml b ...
- ❤️用武侠小说的形式来阅读LinkedList的源码,绝了!
一.LinkedList 的剖白 大家好,我是 LinkedList,和 ArrayList 是同门师兄弟,但我俩练的内功却完全不同.师兄练的是动态数组,我练的是链表. 问大家一个问题,知道我为什么要 ...
- 关于Quartus构建nios软核以及eclipse建立c语言工程以及成功下载到FPGA芯片过程遇到的各种问题以及解决方法详解
这不是一篇构建nios的教程,而是遇到的各种问题以及解决方法.至于构建教程,网上一大把,我推荐正点原子的FPGA教程,比较新,比较详细,通俗易懂!!! 这里以一个点亮LED灯的Nios软核为例,很明显 ...
- Linux服务器JDK的安装
JDK安装 开发java程序必须要的环境 下载JDK rpm. 安装环境 #检测当前系统是否安装Java环境 java -version #如果有就需要卸载 #rpm -qa|grep jdk #检测 ...
- .Net Core配置Configuration源码研究
最近又研究了一下.NetCore配置选项的源码实现,又学习到了不少东西.这篇文章先写一下IConfiguration的学习成果,Options的后面补上 核心类 ConfigurationBuilde ...
- element后端管理布局
<template> <el-container> <el-header> <Header></Header> <span class ...
- 再谈java线程
线程状态 描述 当线程被创建并启动之后,它既不是已启动就进入到了执行状态,也不是一直处于执行状态.在线程的声明周期中有六中状态. java api中java.lang.Thread.State这个枚举 ...
- android开发使用jxl创建Excel
这周水了几天,今天把博客赶上,找找状态. 周五的时候终于完成了课堂测试第二阶段,主要的难点就是生成Excel表并将填写的数据插入到Excel表中. 一.jxl使用 1.创建或读取一个工作薄 Workb ...
- Java Web下MySQL数据库的增删改查(二)
前文:https://www.cnblogs.com/Arisf/p/14095002.html 在之前图书管理系统上做了改进优化 图书管理系统v2 首先是项目结构: 1.数据库的连接: 1 pack ...