在进行wp开发时,要注意一下图片的加载形式。在wp7中,资源文件主要有三种BuildAction属性,Resource/Content/None。默认情况下会选择Resource的方式加载。
我刚开始学wp开发的时候,碰到了大多数人都会碰到的问题:为什么图片设置成Resource的时候,程序运行时不能图片显示出来,而设置成Content的形式则可以。
(1)资源文件的三种生成属性
先简单说说这三种加载方式的区别吧。
Resource方式:资源文件在程序打包时,会集成到xap文件的dll中。
Content方式:资源文件会与dll一起以各自独立存在的形式打包到xap文件中。例如图片,它在压缩包中以实际的图片文件形式存在。
None方式:资源文件既不会直接打包在xap文件里,也不会嵌入到xap的dll中,编译过程则是完全忽略该资源文件。
(2)图片Image设置URI的方式
一般来说,将资源文件集成到dll中时,程序启动的时间将包含了加载该资源文件所需的时间,但如果这些文件一旦加载完毕,在程序运行期间将能快速访问到这些文件。而资源文件以独立的形式存在时,程序将会等到实时需要加载资源时才执行加载的操作。因此,当程序需要快速启动时,可以将例如图片的资源文件设置成Content的生成属性,否则可以设置成Resource属性。
之前碰到的图片设置成Resource属性而无法显示,其中一个原因可能是由于uri的设置不对造成的。对于Resource和Content,分别有各自的uri设置方式。例如
Resource: <Image Source="..\ImagesAsResource\bg1.png"/> or <AppNameSpace;component/ImagesAsContent/bg1.png>
Content: <Image Source="/ImagesAsContent/bg1.png"/>
加深这方面的理解,如果做到灵活加载资源文件,可以优化内存的使用。