沈阳网站优化,阿里云网站建设基本流程,保定知名网站建设公司,如何制作个人手机网站silverlight Image Source URI : 一个反斜杠引发的血案 Silverlight2 现在支持的Image格式有jpg和png#xff0c;部分png编码也不支持#xff0c;同时有些png在xaml的design预览中不可见#xff0c;但运行时可见。请看XAML markup中两行代码的异同#xff1a; StackPan… silverlight Image Source URI : 一个反斜杠引发的血案 Silverlight2 现在支持的Image格式有jpg和png部分png编码也不支持同时有些png在xaml的design预览中不可见但运行时可见。请看XAML markup中两行代码的异同 StackPanel BackgroundWhite OrientationVertical Image x:Nameblue Source/images/blue.png StretchNone/ Image x:Namegreen Sourceimages/green.png StretchNone / /StackPanel 反斜杠forward-slash有没有虾米区别呢如图所示名称为Resource测试示例解决方案资源管理器以及运行效果以反斜杠开头的 blue图片需要放在ClientBin目录下的相应文件夹里不以反斜杠开头的green图片应该放在Resource目录下的相应文件夹里。这样才可 正确引用否则会发生ImageError。 为什么两者都是相对路径到底反斜杠带来了什么区别呢反斜杠开头的相对路径代表的相对位置是应用程序运行的根目录即.xap压缩包内若在这其中寻找不到要引用的文件则相对路径的回退机制fallback mechanism 自动在在.xap所在的目录本例即为ClientBin目录中寻找加以引用。两个位置都没有才会发生错误。不以/开头则代表的相对位置是引用该图片的XAML文件所在的目录本例即page.xaml文件所在的Resource目录。 那么究竟选择哪种方式呢把xap文件重命名为zip文件解压之再用reflector反编译其中的dll文件发现其包含了green图片却没有 blue图片。其实也很明显blue所在的images文件夹与.xap同级自然不会包含在内。由此可知不以反斜杠开头的green图片嵌入到 Silverlight程序中的xap文件直接下载到客户端而blue图片则按需索取on-demand当显示时再去下载。当数据量较大时不以 反斜杠开头的方式加载程序的时间就过长用户体验不好以/开头自然就无此无虑不过以反斜杠开头的话在xaml中设计预览看不到只有程序运行才 可以看到。若为了预览可先从ClienBin那里复制一份放在page.xaml同级目录下供设计使用程序发布时予以删除。 除了在XAML中直接确定Image的Source URI当然也可以在code-behind中确定此时反斜杠的用法和XAML中相通。 C#Image img new Image(); img.Source new BitmapImage(new Uri(test.jpg, UriKind.Relative)); //page.xaml所在目录下//img.Source new BitmapImage(new Uri(/test.jpg, UriKind.Relative)); //.xap所在目录下 话说要是使用诸如http://www.liongg.net/test.jpg之类绝对URI就没反斜杠什么事了。在代码中还可以利用 Application.Current.Host.Source.AbsolutePath等方法我试验下了发觉太麻烦还没意思不再多管。 再深入一点甚至图片放在与page.xaml同级的文件夹下一样可以使用反斜杠进行引用。只需要在相应图片的属性里把Build Action选择为Content即可不过该图片还是被放到.xap压缩包里了这是后话参见 转载于:https://www.cnblogs.com/songtzu/archive/2012/04/12/2443571.html