问题

说来也简单:首先,我在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相关推荐

  1. WPF 中的 Uri 地址的不同写法

    想写时发现别人已经写了,直接引用. http://www.cnblogs.com/xietianjiao/p/5640269.html 绝对 pack WPF URI pack://applicati ...

  2. 在WPF中显示动态GIF(转)

    http://www.silverlightchina.net/html/study/WPF/2011/0824/9965.html 在我们寻求帮助的时候,最不愿意听到的答复是:很抱歉,在当前版本的产 ...

  3. 闲话WPF之十八(WPF中的资源 [4] )

    在前一个Post当中,我从资源编译行为的角度讨论了WPF中的资源.但是,不管是Resource还是Content都是在编译时声明资源.如果我们打破这个限制,不希望指定完全确认的资源地址.WPF提供了一 ...

  4. WPF中显示任意目录的图片或其他资源文件

    最近在做一个WPF的抽奖程序,需要显示人员照片.做的时候把照片全都加到项目里了,作为内容,在ListBox或其他控件中绑定,可以正常显示.但人员照片需要经常添加修改的,总不能每次都重新编译项目吧.因此 ...

  5. WPF中的嵌入的资源与Resource

    WPF中的嵌入的资源与Resource 我们将资源文件添加至.net C#工程时,文件的生成操作有多种可选方式.通常用的多的是两种:[嵌入的资源]和[Resource],如果从需要从代码中使用这些资源 ...

  6. 深入WPF中的图像画刷(ImageBrush)之1——ImageBrush使用举例

    深入WPF中的图像画刷(ImageBrush)之1--ImageBrush使用举例 2010年06月11日 星期五 15:20 昨天我在<简述WPF中的画刷(Brush) >中简要介绍了W ...

  7. 解读WPF中的Xaml

    1.Overview 这篇文章主要分享从源代码角度解读wpf中xaml.由于源码查看起来错综复杂"随便找一个对象按下F12就是一个新的世界",看源码的感觉就是在盗梦空间里来回穿梭: ...

  8. WPF中删除打开过的图片

    WPF中删除打开过的图片 原文:WPF中删除打开过的图片 在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关 ...

  9. wpf中xps文档合并功能实现

    原文:wpf中xps文档合并功能实现 跟着上一篇的xps文档套打的文章,近期一直在研究xps打印技术,其中用户提到了一个需求,要求能够多页面进行打印,我的想法是,先生成xps文件,然后将文件读取出来以 ...

最新文章

  1. “北京今年入冬的第一场雪”,纪念博客园写日志一年了
  2. ActionResult 返回类型
  3. 同时10万个事务在线,读写频繁,数据库该如何设计
  4. -Wl,-rpath=
  5. 一个Quake2的世界浏览器DEMO(附源码)
  6. ASP.NET 2.0 中的新增服务、控件与功能概述(四)
  7. oracle 取时间比较,Oracle最大日期获取方法
  8. BZOJ 3203 Sdoi2013 保护出题人 凸包+三分
  9. 自动给神经网络找bug,Google发布TensorFuzz
  10. consul配置mysql集群_consul1.6实现Mysql-Gtid主从读写分离和高可用-03
  11. Python编写软件与从倍福PLC通讯软件
  12. 对接谷歌翻译接口的WordPressSEO插件
  13. easyPOI 模板导出Excel
  14. ITextSharp获取pdf文件指定关键字的坐标信息,用于签名。
  15. Android自定义华为睡眠,Android自定义View
  16. Unity 增加2D游戏的打击感笔记
  17. HDU-1556题解
  18. C# 获取图片,Pdf中的文字
  19. 网页中漂浮的图片代码
  20. 有关阿里云ECS访问端口和加入安全组的说明

热门文章

  1. windows没有磁盘_Windows硬盘和内存镜像取证
  2. linux 删除mysql_MySQL— Linux下解压包方式安装
  3. uni map 实时记录轨迹_国际学校纷纷引进MAP考试系统,到底有什么好处?
  4. 华为鸿蒙全能家居,能兑现多少?华为智慧屏十年不过时,用鸿蒙理念做智能家居...
  5. 计算机原理eprom,eprom eeprom和flash储存器的工作原理及区别
  6. python敏感词过滤代码简单_大型企业都在用,Python实现敏感词过滤
  7. 系统启动数据库服务器,linux系统如何启动数据库服务器
  8. 计算机网络于20世纪60年代萌芽,计算机网络的发展经过哪几个阶段?
  9. mobi格式电子书_没有kindle,如何用手机阅读mobi格式的电子书?
  10. 大快人心,盗版串口芯片CH340的被判刑了,公司被罚400万!