wpf pack uri理解

要理解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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值