wpf pack uri理解

来源:互联网 发布:w7怎么切换网络连接 编辑:程序博客网 时间:2024/05/16 08:18

要理解wpf pack uri,首先要解释下应用程序数据文件,其实指的就是应用程序依赖的非可执行文件,例如xaml、图像、视频等。wpf支持对数据文件进行配置、识别及使用。在wpf中对数据文件分为三类:

1. 资源文件---被编译进可执行文件或者类库的数据文件

2. 内容文件---与程序集有显式关联关系的独立的数据文件

3. 源站点文件---与程序集没有关联的独立数据文件

 

一 资源文件

若工程文件的生成操作(Build Action)为Resource, 则此文件为资源文件,对于此类资源的引用可以使用样例语法

<ResourceDictionary Source="pack://application:,,,/TopdeskRes;component/Button/ButtonResDictionary.xaml"/><Image Height="200" Source="pack://application:,,,/Image/Chrysanthemum.jpg"/>

 

二 内容文件
若工程文件的生成操作(Build Action)为Content, 则此文件为内容文件,应设置CopyToOutputDirectory为非无项。对于此类资源的引用可以使用样例语法

<Image Height="200" Source="pack://application:,,,/Image/Chrysanthemum.jpg"/>

此pack语法不会出现引用的程序集,因为内容文件是独立的数据文件,是与当前程序集关联关系的。

 

三源站点文件

源站点文件指的是与程序集没有必然关联关系的独立数据文件。对于此类资源的引用可以使用样例语法

<Image Height="200" Source="pack://siteoforigin:,,,/Image/Desert.jpg"/>

 

在具体实践中,发现使用内容文件 pack uri方式引用文件,此文件必须存在于工程文件中,且build action为content,若不是以上设置,即使文件出现在了指定位置处,资源依然不会被加载(示例中图像不会被加载),原因应该是程序在资源或者元信息中没有找到相关的内容文件信息而出错。 改为源站点文件的话,若相关文件没有存在于工程目录下,wpf designer会异常,提示DirectoryNotFoundException错误,于是我又不得不将相关文件加入到工程中,并将build action设置为无。这应该是designer的一个bug。

以上的讨论基于在xaml中使用pack uri。

0 0