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之资源专题的更多相关文章

  1. WPF之资源字典zz

    最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...

  2. WPF 之 资源(Resource)

    1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. ...

  3. WPF 中资源路径的问题

    WPF 中资源路径的问题 1. 引用当前工程的资源(注意xxxx.png的build action 应设置为Resource 或Embedded Resource) <ImageBrush Im ...

  4. WPF样式资源文件简单运用

    WPF通过资源来保存一些可以被重复利用的样式,下面的示例展示了简单的资源样式文件的使用: 一.xaml中定义资源及简单的引用 <Window.Resources > <!--wpf窗 ...

  5. WPF 访问资源中的Storyboard

    原文:WPF 访问资源中的Storyboard <UserControl.Resources> <Storyboard x:Key="testStoryboard" ...

  6. WPF学习资源整理

    WPF(WindowsPresentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的编程模型 ...

  7. WPF 调用资源图片

    原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+ ...

  8. WPF - 资源收集

    原文:WPF - 资源收集 OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅.此篇文章将不断更新,感兴趣的可以看看,也欢 ...

  9. WPF 为资源字典 添加事件响应的后台类

    原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...

随机推荐

  1. docker安装与配置nginx详细过程

    注:大鸟飞过,此方式只用于快速搭建使用 第一步 pull nginx 命令:docker pull nginx 第二步 启动nginx 命令:docker run --name nginx -p 80 ...

  2. 前端 | 页面触底自动加载 Vue 组件

    不管是 web 端还是移动端,信息流都是现在很流行的信息展示方式.信息流经常搭配自动加载一起使用以获得更好的使用体验. 最近在使用 Vue 开发过程中也遇到了首页信息流自动加载的需求.大致了解了一下几 ...

  3. js日期处理多少/月/天以前

    var date = new Date(); var year = date.getFullYear(); var month = (date.getMonth() + 1) > 10 ? da ...

  4. 细说Typescript类型检查机制

    上一篇文章我介绍了Typescript的基础知识,回顾一下,有基础数据类型.数组.函数.类.接口.泛型等,本节内容将述说一下Typescript为方便我们开发提供了一些类型检查机制. 类型检查机制 类 ...

  5. iGuard和NFS文件同步的解决方案

    一般来说,从文件系统中获得文件变化信息,调用操作系统提供的 API 即可.Windows 操作系统上有个名为 ReadDirectoryChangesW 的 API 接口,只要监视一个目录路径就可以获 ...

  6. MySQL授权认证

    • MySQL-权限系统介绍 • 权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除等数据库操作的权限 • 不能明确的指定拒绝某个用户的连接 • 权限控制(授权与回收)的执行语句包括 ...

  7. Spring BeanDefinition

    定义 /** * A BeanDefinition describes a bean instance, which has property values, * constructor argume ...

  8. Linux下Sed替换时无法解析变量

    1.问题描述 用sed替换文件中的IP时,想替换成$es_ip中的值,但是却不能解析这个变量$es_ip sed -ri 's/([0-9]{1,3}\.){3}[0-9]{1,3}/$es_ip/g ...

  9. com.google.zxing.NotFoundException-识别图片二维码信息错误

    一.问题由来 自己在做一个小程序项目的后台,其中需要使用到识别图片二维码信息,而且是必须在Java后台进行识别二维码操作.去百度里面很快找到一个方法, 可以识别简单的二维码,而且自己生成的简单的二维码 ...

  10. jvm学习笔记:虚拟机栈

    虚拟机栈 Each Java Virtual Machine thread has a private Java Virtual Machine stack, created at the same ...