WPF学习笔记7. Resource
2010-10-11 16:19:14 来源:本站整理1. 二进制资源WPF 支持三种方式的二进制资源,这些资源可以非常方便地在 XAML 中使用。
Resource: 将资源嵌入程序集中,和 Embedded Resource 有点像。区别在于 WPF 将相关资源打包到 .Resources 文件,然后再由编译器嵌入到程序集文件中。WPF 默认的 URI 访问方式是不支持 Embedded Resource 的。
Content: 资源不会嵌入到程序集,仅仅在程序集清单中添加一条记录,这和以往我们所熟悉的方式一样。资源文件必须随其他程序集文件一起部署到目标目录。
Loose File: 这类资源通常是运行期动态确定或加入的。
WPF 通过统一资源标识符(URI)访问相关资源文件。
(1) 访问 Resource / Content 资源
<Image Source="/a.png" />
<Image Source="/xxx/x.png" />
(2) 访问松散资源文件(Loose File)
<Image Source="pack://siteOfOrigin:,,,/a.png" />
<Image Source="c:\test\a.png" />
XAML 编译时需要验证所有资源有效性,因此在使用松散资源文件时必须使用有效的 URI 路径。 "pack://" 表示 Package URI,"pack://siteOfOrigin:,,," 表示从部署位置开始,相应的还有 "pack://application:,,," 上面的 Resource 资源全路径应该是 "pack://application:,,,/a.png",只不过通常情况下我们使用省略写法而已。
<Image Source="pack://application:,,,/a.png" />
其他的 URI 写法还包括:
<Image Source="/tech/UploadPic/2010-10/2010101116192988.gif" /> <Image Source="\\server1\share\logo.gif" /> <Image Source="file://c:/test/logo.gif" />
(3) 访问其他程序集中的资源文件
提供一个可替换的专用资源 DLL 也是一种常用编程手法,尤其是多语言或者换肤机制。WPF 访问其他程序集资源文件的语法有点古怪。
pack://application:,,,/AssemblyReference;Component/ResourceName
其他程序集的资源必须以 Resource 方式嵌入。
不能省略 "/AssemblyReference" 前面的反斜杠。
Component 是关键字,必须包含在 URI 中。
<Image Source="pack://application:,,,/Learn.Library;component/s.gif" /> <Image Source="/Learn.Library;component/s.gif" />
更多精彩
赞助商链接