Silverlight镜像:动态加载URL?

pea*_*ewg 13 silverlight silverlight-2.0

我正在修补Silverlight 2.0.

我有一些图像,我目前有一个图像源的静态URL.有没有办法从托管控件的网站的URL路径动态加载图像?

或者,一个配置设置,存储在一个地方,保存URL的基本路径,以便每个图像只保存文件名?

Cra*_*son 16

从我收集的内容来看,您并不是想动态地更改图像本身,而是在运行时正确地确定图像的位置.

我相信只需在图片相对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都与XAP文件所在的位置相关(通常是ClientBin文件夹),Silverlight会附加命名空间.解决方法是绝对如下:new Uri(App.Current.Host.Source,"../ hello.jpg"); (2认同)

Aar*_*her 15

在后面的代码或值转换器,你可以做

  Uri uri = new Uri("http://testsvr.com/hello.jpg");
  YourImage.Source = new BitmapImage(uri);
Run Code Online (Sandbox Code Playgroud)


Mal*_*ine 6

// 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));  
Run Code Online (Sandbox Code Playgroud)

  • 插入好的图像文件名:D (3认同)