文件生成操作:
Silverlight里的资源文件(图片、视频、字体、XML、XAML等) 生成操作属性选择不同选项时,文件的生成方式和存储位置会有相应变化,下面说一下几个常用的选项:
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;