绝对 pack WPF URI

pack://application:,,,/是协议;“,,,”是“///”的变体

1.资源文件 — 本地程序集

Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);

子文件夹中的资源文件 — 本地程序集(资源文件在本地程序集的子文件夹)

Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);

2.资源文件 — 所引用的程序集(资源文件在别的程序集)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);

3.所引用的程序集的子文件夹中的资源文件(资源文件别的程序的子文件夹)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);

4.所引用的版本化程序集中的资源文件(版本化在中间加入版本信息)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);

综上:路径前部分是”pack://application;,,,/程序集名字;”;后半部分”component/路径“”;合起来是一个绝对路径;如果是本地程序集,程序集名字和compoent可以省略(;也省略掉)

WPF URI内容文件

1.Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);

2.子文件夹中的内容文件

Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);

3.源站点文件

Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);

4.子文件夹中的源站点文件

Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

相对 pack URI

1.WPF URI资源文件 — 本地程序集

Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);

2.子文件夹中的资源文件 — 本地程序集

Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);

3.资源文件 — 所引用的程序集

Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);

4.子文件夹中的资源文件 — 所引用的程序集

Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);

                                                                                                                                

内容文件

Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);

WPF URI子文件夹中的内容文件Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

                                          特点:不用协议

一、加载本项目的图片 WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。 其中较为常见的情况是用Uri加载图像。Uri表达式的一般形式为:协议+授权+路径 协议:pack:// 授权:有两种。一种用于访问编译时已经知道的文件,用application:/// 一种用于访问编译时不知道、运行时才知道的文件,用siteoforigin:///
一般用逗号代替斜杠,也就是改写作application:,,,和pack:,,, 路径:分为绝对路径和相对路径。一般选用相对路径,普适性更强
下面,我们举一个简单的例子: pack://application:,,,/images/my.jpg 当然,WPF默认Uri设置有pack://application:,,,,所以我们也可以直接将其写作:/images/my.jpg
后边写例子程序时,为了让读者更好的了解Uri,我们都采用完整的Uri写法。 下面在讲讲装载图片的两种方式,一种用XAML引用资源,一种用代码引用资源。
用XAML引用资源:

 
<Image Source="pack://application:,,,/images/my.jpg"/>

也可以这样

 
<Image Source="/images/my.jpg"/>

用代码引用资源:

 
Image img;
img.Source=new BitmapImage(new Uri("pack://application:,,,/images/my.jpg"),UriKind.Relative);

也可以直接使用代码中引用图片资源

 
image2.Source = new BitmapImage(new Uri("/images/my.jpg", UriKind.Relative));

二、WPF 调用资源图片

 
imagePath = "pack://application:,,,/Solution;component/Properties/../images/star/my.jpg";
imageBrush.ImageSource = new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));

三、WPF引用外部项目资源的方法 WPF中如果你使用的资源文件不是本程序集的,是另外的程序集,就可以这样做: 1.引用要用的程序集,pack://application:,,,/程序集名称;component/路径 ,其中pack://application:,,,可以省略 示例:

 
<Image Source="pack://application:,,,/Skin;component/image/you.png" />

或者

 
<Image Source="/Skin;component/image/you.png" />

四、使用SiteOfOrigin

 
imgContent.Source = new BitmapImage(new Uri("pack://SiteOfOrigin:,,,/images/my.jpg"));

wpfのuri(让你完全明白wpf的图片加载方式以及URI写法)的更多相关文章

  1. 二、从GitHub浏览Prism示例代码的方式入门WPF下的Prism之Modules的几种加载方式

    这一篇梳理Prism中07示例Module的几种加载方式. 07示例分为了5个,有5种不同的Module加载方式. 我们开始学习加载Modules 观察07-Modules-Appconfig示例 分 ...

  2. 关于WPF的ComboBox中Items太多而导致加载过慢的问题

    原文:关于WPF的ComboBox中Items太多而导致加载过慢的问题 [WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题                          ...

  3. 资源文件加载(Pack URI 方案)

    Pack URI 在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括:1.指定当应用程序第一次启动时显 ...

  4. WPF 界面实现多语言支持 中英文切换 动态加载资源字典

    1.使用资源字典,首先新建两个字典文件en-us.xaml.zh-cn.xaml.定义中英文的字符串在这里面[注意:添加xmlns:s="clr-namespace:System;assem ...

  5. WPF应用加载图片URI指定需要注意的地方

    应用程序(.exe)加载图片: 可以省略"pack://application:,,," 打头,因为系统运行时需要的图片文件在Exe程序集(组合体)中:譬如: <Image ...

  6. WPF加载HTML、WPF与JavaScript交互

    目录 一.WebBrowser加载远程网页 二.WebBrowser加载本地网页,注:不可以加载本地样式CSS和脚本JS文件 三.WebBrowser隐藏网页的JavaScript错误 四.网页屏蔽鼠 ...

  7. WPF动画 - Loading加载动画

    存在问题: 最近接手公司一个比较成熟的产品项目开发(WPF桌面端),其中,在登陆系统加载时,60张图片切换,实现loading闪烁加载,快有密集恐惧症了!!! 代码如下: private void L ...

  8. WPF当属性值改变时利用PropertyChanged事件来加载动画

    在我们的程序中,有时我们需要当绑定到UI界面上的属性值发生变化从而引起数据更新的时候能够加载一些动画,从而使数据更新的效果更佳绚丽,在我们的程序中尽量将动画作为一种资源放在xaml中,而不是在后台中通 ...

  9. (转)利用WPF的ListView进行大数据量异步加载

    原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时 ...

随机推荐

  1. ActionController::InvalidAuthenticityToken 解决办法(第二种尤其有效)

    第一种:  Ror代码 class FooController < ApplicationController       protect_from_forgery :except => ...

  2. Struts2的Action名称搜索顺序:2014.12.30

    struts.xml配置: <struts> <package name="hw" namespace="/test" extends=&qu ...

  3. php file_get_contents与curl性能比较

    1.fopen /file_get_contents 每次请求都会重新做DNS查询,并不对 DNS信息进行缓存.但是CURL会自动对DNS信息进行缓存.对同一域名下的网页或者图片的请求只需要一次DNS ...

  4. YZM的全排列

    50073081 YZM的全排列 [试题描述] 一天,老师给可怜的YZM出了一道题:写出1~n的全排列.YZM写了一天也没写出来.请你帮帮快跪的YZM,输出1~n的全排列.注:这里n为9 [输入要求] ...

  5. 【GDI+】继续图形的问题

    现在有一个需求: 一个或多个四个点组成的矩形,一个或多个值指定 下一点->当前点方向的垂直方向是不闭合的. 目前大概有三种情况: 1.只有一个矩形且只有一个指定不闭合方向的时候,此时只用按照指定 ...

  6. fedora环境安装webkit支持作爬虫下载解析JS

    环境: 我使用的fedora19.1-xfce版本,属于redhat系的桌面环境. 1.安装 webkit源码安装webkit失败,这里提供的是yum安装方式. a.查看当前yum库中的webkit资 ...

  7. 搭建无限制权限的简单git服务器使用git-daemon脚本

    如果想要用ubantu架设无限制权限(即不适用gitosis)的简单git服务器,实现git库下载clone,push等简单的基本功能, 可以直接使用git-daemon脚本(非常不安全,建议项目代码 ...

  8. JavaScript复习笔记——字符串

    String构造器可以使用new调用,也可以不使用,但是,这两种调用的结果也是完全不一样的.用new调用的时候,String作为构造器函数,创建字符串对象.不使用new的时候,String用作一个常规 ...

  9. 在 mysql 中利用 Duplicate key, 一句话实现存在的更新不存在插入功能

    mysql 中可以用一个sql命令实现在插入时,如果发现唯一索引重复的记录则自动改为更新语句, 语句如下: '; 注意,radcheck 表中 username 和 attribute 列是个组合的唯 ...

  10. React笔记_(7)_react路由

    路由 路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程. 路由器当然是作为一个转发设备出现的,主要是转发数据包来实现网络互联. 那么react的路由到底指的是什么呢? 举个 ...