Silverlight中文件的生成操作与其对应的获取方法

文件生成操作:

Silverlight里的资源文件(图片、视频、字体、XMLXAML) 生成操作属性选择不同选项时,文件的生成方式和存储位置会有相应变化,下面说一下几个常用的选项:

1、 Page:一般xaml文件都用这个。

2、 Compile一般cs文件都用这个

3、 ApplicationDefinition一般程序入口文件都用这个(默认为App.xaml)

4、 Resource

一般程序里的资源文件设置成Resource状态时,编译之后文件会被嵌进程序集(dll)中, dll们放在xap包里。(可以用Reflector.exe看一下dll的内容,一看便知)。

5、 Content

一般程序里的资源文件设置成Content状态时,编译之后文件不会被嵌进程序集(dll)中,而是放在dll外,与dll们一起放在xap包里。(可以把xap包解压缩,一看便知)。

小结:

最后两个选项是最常用的,个人觉得掌握了这两种一般应用就够了,其他的选项不是很常用,如有特殊需要可以去MSDN家找找看。

 

文件获取方法:

下面以图片为例说一下各种文件的获取方法:在工程里添加一个文件夹Images,然后添加一张图片background.jpg

1、 background.jpg的生成操作属性选择 Resource时,编译后将被嵌在程序集(dll)里,获取方式如下:

<Image Source="./Images/background.jpg"></Image>

<Image Source="../Images/background.jpg"></Image>

<Image Source="Images/background.jpg"></Image>

<Image Source="/SilverlightApplication1;component/Images/background.jpg"></Image>

2、 background.jpg的生成操作属性选择 Content时,将被生成在程序集(dll)外,以文件形式存在于xap包里,获取方式如下:

<Image Source="/Images/background.jpg"></Image>

3、 background.jpg以文件形式存在于ClientBin文件夹里,获取方式如下:

<Image Source="/Images/background.jpg"></Image>

 

归纳一下以上几种获取文件的方法:

1、 相对路径:

1)   前加“./”:<Image Source="./Images/background.jpg"></Image>

2)   前加“../”:<Image Source="../Images/background.jpg"></Image>

3)   不加任何前导符:<Image Source="Images/background.jpg"></Image>

4)   前加“/”:<Image Source="/Images/background.jpg"></Image>

前三种写法相对路径根目录为程序集(dll),默认在程序集里找图片。第二种路径前加“../”的情况,应用在子文件引用父文件夹里图片时。第四种写法也是相对路径,但是根目录为xap包,默认在dll所在xap包里找图片。

以上四种情况如果在dll或者xap包里找不到图片,有个回退机制控制程序去ClientBin里找图片,如果还没找到就报错。

2、 指定程序集

<Image Source="/SilverlightApplication1;component/Images/background.jpg"></Image>

这种情况指定在某程序集里找图片,如果找不到就报错,不会去其他地方找。

3、 绝对路径

<Image Source="http://img1.cache.netease.com/cnews/2009/10/7/200910070216124029d.jpg"></Image>

这种情况就无所谓了,图片有就是有,没有就报错。

4、 代码获取

cs代码里用程序实现获取图片也很简单,路径的写法与上述三种一样,例如:

BitmapImage bitmapImage = new BitmapImage();

bitmapImage.UriSource = new Uri("Images/background.jpg", UriKind.RelativeOrAbsolute);

this.img.Source = bitmapImage;

posted @ 2009-10-09 10:11  YQY  阅读(1164)  评论(2编辑  收藏  举报