
WPF使用pack URI语法寻找资源。
URI负责搜索如下位置的资源:
- 当前程序集
- 引用的程序集
- 相对于程序集的某个位置
- 应用程序的源站点
pack URI的格式:pack://机构/路径
- 机构指定了包含部件的包类型
- 路径是指部件在包中的位置
包和部件的关系类似应用程序与文件之间的关系,包可以包含多个部件:
- 编译到本程序集内的资源文件
- 编译到所引用程序集的资源文件
- 内容文件
- 源站点文件
MSDN上面给出了图例,告诉我们application:///权限和siteoforigin:///权限的关系:
下面分别介绍引用资源文件的语法。
1、使用pack URI引用本地程序集资源文件:
- 授权:application:///
- 路径:资源文件的名称--包括相对于本地程序集项目文件夹根目录的路径。
举个例子:
- 引用本地程序集根目录中的XAML文件
pack://application:,,,/Resource.xaml
- 引用的资源文件位于本地程序集项目的子文件夹(subfolder)中
pack://application:,,,/subfolder/Resource.xaml
2、引用的程序集资源文件(注意:引用程序集资源的包语法只能是application:///机构)
- 授权:application:///
- 路径:编译到所引用的程序集中的资源文件的名称。
路径须符合以下格式:
- 程序集段名称
- 程序集版本[可选]
- 公钥[可选]
- 组件
- 路径:资源文件的名称
举个例子:
- 资源文件位于引用程序集项目文件夹的根目录中
pack://application:,,,/ReferenceAssembly;component/Resource.xaml
- 资源文件位于引用程序集项目文件夹的子文件夹中
pack://applicaiton:,,,/ReferenceAssembly;component/Subfolfer/Resource.xaml
- 资源文件位于特定版本的引用程序集项目文件夹的根目录中
pack://application:,,,/ReferenceAssembly;v1.0.0;component/Resource.xaml
3、内容文件URI的pack使用
- 授权:application:///
- 路径:内容文件的名称,包括文件夹的位置
举个例子:
- 内容文件与可执行程序集位于同一文件夹中
pack://application:,,,/ContentFile.xaml
- 内容文件位于可执行程序集的子文件中
pack://applicaiton:,,,/Subfolder/Content.xaml
4、绝对包URI和相对包URI
- 标签中使用绝对pack URI:
- 标签中使用相对pack URI
- 代码中使用绝对pack URI
- 代码中使用相对pack URI