我正在修补Silverlight 2.0.
我有一些图像,我目前有一个图像源的静态URL.有没有办法从托管控件的网站的URL路径动态加载图像?
或者,一个配置设置,存储在一个地方,保存URL的基本路径,以便每个图像只保存文件名?
从我收集的内容来看,您并不是想动态地更改图像本身,而是在运行时正确地确定图像的位置.
我相信只需在图片相对URL前加上"../",就可以将您带到应用程序的根目录,而不一定是网站,因为应用程序可能不会托管在网站的根目录中.
如果您的XAP文件位于以下位置:
http://somesite.foo/app1/somethingelse/clientbin/MyFoo.xap
而你试图链接以下图像:
http://somesite.foo/app1/somethingelse/images/a/boo.png
显然,所有相对URI都与XAP文件所在的位置相关(通常是ClientBin文件夹),Silverlight会附加当前的Silverlight客户端命名空间.因此,如果Silverlight控件位于命名空间Whoppa中,则需要将所有图像放在clientbin/Whoppa /目录中.不太方便.
解决方法是使用绝对URI,如下所示:
新的Uri(App.Current.Host.Source,"../ images/a/boo.png");
在后面的代码或值转换器,你可以做
Uri uri = new Uri("http://testsvr.com/hello.jpg"); YourImage.Source = new BitmapImage(uri);
// create a new image Image image = new Image(); // better to keep this in a global config singleton string hostName = Application.Current.Host.Source.Host; if (Application.Current.Host.Source.Port != 80) hostName += ":" + Application.Current.Host.Source.Port; // set the image source image.Source = new BitmapImage(new Uri("http://" + hostName + "/cute_kitten112.jpg", UriKind.Absolute));