资源
我们把有用的东西称为资源。
“兵马未动,粮草先行”——程序中的各种数据就是算法的原料和粮草。
程序中可以存放数据的地方有很多,可以放在数据库里、可以存储在变量里。
界于数据库存储和变量存储之间,我们还可以吧数据存储在程序主体之外的文件里。
外部文件与程序主题分离,这就有可能丢失或损坏,为了避免丢失或损坏,
编译器允许我们把外部文件编译进程序主体、成为程序主体不可分割的一部分,这就是传统意义上的程序资源(也称为二进制资源)。
WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源,每个界面元素都可以携带自己的资源并可被自己的子级元素共享。
(各种模板、程序样式和主题就经常放在对象级资源里。)
在WPF程序中数据就分为四个等级存储:
■数据库里的数据相当于存放在仓库里
■资源文件里的数据相当于放在旅行箱里
■WPF对象资源里的数据相当于放在随身携带的背包里
■变量中的数据相当于拿在手里
Static和Dynamic
当这对词一同出现的时候Static指的是程序的非执行状态,
而Dynamic指的是程序运行状态。
对于资源的使用,Static和Dynamic也是这个意思。
静态资源使用(StaticResource)指的是再程序载入内存时对资源的一次性使用,之后就不再去访问这个资源了。
动态资源使用(DynamicResource)使用指的是再程序运行过程中仍然会去访问资源。
Windows应用程序资源的道理与WInZip或WinRAR压缩包的道理差不多,实际上是把一些应用程序必须使用的资源
与应用程序自身打包在一起,这样资源就不会意外丢失了(负作用就是应用程序体积会变大)。
常见的应用程序资源有图标、图片、文本、音频、视频等,各种编程语言的编译器或资源编译器都有能力吧这些
文件编译进目标文件(最终的.exe或.dll文件),资源文件在目标文件里以二进制数据的形式存在、形成目标文件的资源段
(Resource Section),使用时数据会被提取出来。
为了不把资源词典里的资源和应用程序内嵌的资源搞混,我们明确的地称呼
资源词典——里的资源为——“WPF资源”或“对象资源”
应用程序——的内嵌资源——“程序集资源”或“二进制资源”