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. Ubuntu 16.04 Install NVidia Driver (download from nvidia official site)

    sudo apt-get update sudo apt-mark hold libreoffice sudo apt-get update && sudo apt-get upgra ...

  2. MySQL alter table时执行innobackupex全备再看Seconds_Behind_Master

    1.场景描述 早上7:25 接到Report中心同学告警,昨天业务报表数据没有完整跑出来,缺少500位业务员的数据,并且很快定位到,缺少的是huabei_order库上的数据.Report中心的数据是 ...

  3. Linux centos7 mysql 的安装配置

    2021-07-21 1. 创建用户 # 创建用户useradd mysql# 修改密码 passwd mysql 2. 下载 wget 网址 3. 解压 # 创建安装文件夹mkdir app# 解压 ...

  4. Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝

    python中的对象和类型 在python中,认为系统中的每一个"东西"都是一个对象,在python中,"对象"有着特殊的意义,python中的对象有: 一个标 ...

  5. Ajax技术---核心XMLHttpRequest对象

    Ajax 的全称是Asynchronous JavaScript and XML,其中,Asynchronous 是异步的意思,它有别于传统web开发中采用的同步的方式. (一)ajax技术的意义 我 ...

  6. maven下载出错

    求解

  7. 性能测试工具JMeter 基础(九)—— 测试元件: 逻辑控制器之交替控制器

    交替控制器:根据被控制器触发执行次数,去依次执行控制器下的子节点(逻辑控制器.采样器),可以由线程组的线程数.循环次数.逻辑控制器触发. 交替控制器(lnterleave Controller) 简单 ...

  8. Redis的读写分离

    1.概述 随着企业业务的不断扩大,请求的并发量不断增长,Redis可能终会出现无法负载的情况,此时我们就需要想办法去提升Redis的负载能力. 读写分离(主从复制)是一个比较简单的扩展方案,使用多台机 ...

  9. Appium问题解决方案(4)- Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException

    背景 操作步骤 运行 uiautomatorviewer.bat 点击左上角的 Device ScreensShot 报错 截图 解决方法 网上还是有很多方法的,可能造成的原因不同,我是第六种方法解决 ...

  10. Robot Framework(6)- BuiltIn 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...