WPF中的Pack URI
问题
说来也简单:首先,我在WPF项目中建立了一个用户自定义控件(CustomControl),VS模板为我们自动生成了
CustomControl1和Theme文件夹(里边包含一个Generic.xaml):
接着,我想把它移动到一个新的类库(DLL)里去:
然后我添加了对类库的引用在WPF项目中,我开始尝试使用该自定义控件,结果,发现显示的结果始终不对,但是也
没有报错。究其原因,肯定是xaml没有加载到,致使界面没有渲染模板。最后开始搜索MSDN,发现WPF应用程序外
部包引用一般使用pack://规范。
PACK URI
表 1:标记中的绝对 Pack URI
文件 |
绝对 pack URI |
---|---|
资源文件 — 本地程序集 |
"pack://application:,,,/ResourceFile.xaml" |
子文件夹中的资源文件 — 本地程序集 |
"pack://application:,,,/Subfolder/ResourceFile.xaml" |
资源文件 — 所引用的程序集 |
"pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml" |
所引用的程序集的子文件夹中的资源文件 |
"pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" |
所引用的版本化程序集中的资源文件 |
"pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml" |
内容文件 |
"pack://application:,,,/ContentFile.xaml" |
子文件夹中的内容文件 |
"pack://application:,,,/Subfolder/ContentFile.xaml" |
源站点文件 |
"pack://siteoforigin:,,,/SOOFile.xaml" |
子文件夹中的源站点文件 |
"pack://siteoforigin:,,,/Subfolder/SOOFile.xaml" |
表 2:标记中的相对 Pack URI
文件 |
相对 pack URI |
---|---|
本地程序集中的资源文件 |
"/ResourceFile.xaml" |
本地程序集的子文件夹中的资源文件 |
"/Subfolder/ResourceFile.xaml" |
所引用的程序集中的资源文件 |
"/ReferencedAssembly;component/ResourceFile.xaml" |
所引用的程序集的子文件夹中的资源文件 |
"/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" |
内容文件 |
"/ContentFile.xaml" |
子文件夹中的内容文件 |
"/Subfolder/ContentFile.xaml" |
在代码中使用 Pack URI
在代码中,可以通过实例化 Uri 类并将 pack URI 作为参数传递给构造函数来指定 pack URI。 下面的示例说明了这一点。
Uri uri = new Uri("pack://application:,,,/File.xaml");
默认情况下,Uri 类将 pack URI 视为绝对 pack URI。 因此,在使用相对 pack URI 创建 Uri 类的实例时会引发异常。
Uri uri = new Uri("/File.xaml");
幸运的是,Uri 类构造函数的 Uri(String, UriKind) 重载可以接受一个类型为 UriKind 的参数,使您可以指定 pack URI 是绝对
URI 还是相对 URI。
// Absolute URI (default) Uri absoluteUri = new Uri("pack://application:,,,/File.xaml", UriKind.Absolute); // Relative URI Uri relativeUri = new Uri("/File.xaml", UriKind.Relative);
当您能够确定所提供的 pack URI 是相对 pack URI 还是绝对 pack URI 的时候,应该只指定 Absolute 或 Relative。 如果您不了解
所使用的 pack URI 的类型(例如,当用户在运行时输入 pack URI 时),请改用RelativeOrAbsolute。
// Relative or Absolute URI provided by user via a text box TextBox userProvidedUriTextBox = new TextBox(); Uri uri = new Uri(userProvidedUriTextBox.Text, UriKind.RelativeOrAbsolute);
SO,外部资源文件,比如视频、图片等,路径的引用都需要使用pack uri。另外,还有,为什么在普通类库中右键添加新建项,没有wpf 自定义控件选项,只能手动建,或者从WPF项目建立后移植过来。
转载于:https://www.cnblogs.com/sjqq/p/6851690.html
WPF中的Pack URI相关推荐
- WPF 中的 Uri 地址的不同写法
想写时发现别人已经写了,直接引用. http://www.cnblogs.com/xietianjiao/p/5640269.html 绝对 pack WPF URI pack://applicati ...
- 在WPF中显示动态GIF(转)
http://www.silverlightchina.net/html/study/WPF/2011/0824/9965.html 在我们寻求帮助的时候,最不愿意听到的答复是:很抱歉,在当前版本的产 ...
- 闲话WPF之十八(WPF中的资源 [4] )
在前一个Post当中,我从资源编译行为的角度讨论了WPF中的资源.但是,不管是Resource还是Content都是在编译时声明资源.如果我们打破这个限制,不希望指定完全确认的资源地址.WPF提供了一 ...
- WPF中显示任意目录的图片或其他资源文件
最近在做一个WPF的抽奖程序,需要显示人员照片.做的时候把照片全都加到项目里了,作为内容,在ListBox或其他控件中绑定,可以正常显示.但人员照片需要经常添加修改的,总不能每次都重新编译项目吧.因此 ...
- WPF中的嵌入的资源与Resource
WPF中的嵌入的资源与Resource 我们将资源文件添加至.net C#工程时,文件的生成操作有多种可选方式.通常用的多的是两种:[嵌入的资源]和[Resource],如果从需要从代码中使用这些资源 ...
- 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例
深入WPF中的图像画刷(ImageBrush)之1--ImageBrush使用举例 2010年06月11日 星期五 15:20 昨天我在<简述WPF中的画刷(Brush) >中简要介绍了W ...
- 解读WPF中的Xaml
1.Overview 这篇文章主要分享从源代码角度解读wpf中xaml.由于源码查看起来错综复杂"随便找一个对象按下F12就是一个新的世界",看源码的感觉就是在盗梦空间里来回穿梭: ...
- WPF中删除打开过的图片
WPF中删除打开过的图片 原文:WPF中删除打开过的图片 在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关 ...
- wpf中xps文档合并功能实现
原文:wpf中xps文档合并功能实现 跟着上一篇的xps文档套打的文章,近期一直在研究xps打印技术,其中用户提到了一个需求,要求能够多页面进行打印,我的想法是,先生成xps文件,然后将文件读取出来以 ...
最新文章
- “北京今年入冬的第一场雪”,纪念博客园写日志一年了
- ActionResult 返回类型
- 同时10万个事务在线,读写频繁,数据库该如何设计
- -Wl,-rpath=
- 一个Quake2的世界浏览器DEMO(附源码)
- ASP.NET 2.0 中的新增服务、控件与功能概述(四)
- oracle 取时间比较,Oracle最大日期获取方法
- BZOJ 3203 Sdoi2013 保护出题人 凸包+三分
- 自动给神经网络找bug,Google发布TensorFuzz
- consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03
- Python编写软件与从倍福PLC通讯软件
- 对接谷歌翻译接口的WordPressSEO插件
- easyPOI 模板导出Excel
- ITextSharp获取pdf文件指定关键字的坐标信息,用于签名。
- Android自定义华为睡眠,Android自定义View
- Unity 增加2D游戏的打击感笔记
- HDU-1556题解
- C# 获取图片,Pdf中的文字
- 网页中漂浮的图片代码
- 有关阿里云ECS访问端口和加入安全组的说明
热门文章
- windows没有磁盘_Windows硬盘和内存镜像取证
- linux 删除mysql_MySQL— Linux下解压包方式安装
- uni map 实时记录轨迹_国际学校纷纷引进MAP考试系统,到底有什么好处?
- 华为鸿蒙全能家居,能兑现多少?华为智慧屏十年不过时,用鸿蒙理念做智能家居...
- 计算机原理eprom,eprom eeprom和flash储存器的工作原理及区别
- python敏感词过滤代码简单_大型企业都在用,Python实现敏感词过滤
- 系统启动数据库服务器,linux系统如何启动数据库服务器
- 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
- mobi格式电子书_没有kindle,如何用手机阅读mobi格式的电子书?
- 大快人心,盗版串口芯片CH340的被判刑了,公司被罚400万!