Silverlight image: загружать URL-адрес динамически?

Я занимаюсь Silverlight 2.0.

У меня есть некоторые изображения, которые у меня есть статический URL для источника изображения. Есть ли способ динамически загружать изображение из пути URL-адреса для сайта, на котором размещен элемент управления?

В качестве альтернативы, параметр конфигурации, хранящийся в одном месте, который содержит базовый путь для URL-адреса, чтобы каждое изображение содержало только имя файла?

Ответы

Ответ 1

В коде позади или конвертер значения вы можете сделать

  Uri uri = new Uri("http://testsvr.com/hello.jpg");
  YourImage.Source = new BitmapImage(uri);

Ответ 2

Из того, что я собираю, вы не пытаетесь изменить изображение сам по себе динамически, а скорее правильно определить местоположение изображения во время выполнения.

Я считаю, что просто префикс относительного 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" );

Ответ 3

// 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));  

Ответ 5

SilverlightHost.Source предоставит вам URL-адрес, который использовался для загрузки файла XAP. Вы можете использовать это, чтобы затем создать относительный URL для ваших изображений.

Итак, если, например, ваш XAP размещен на http://foo.bar/ClientBin/bas.xap, и ваши изображения были сохранены в http://foo.bar/Images/ вы можете просто использовать источник, чтобы захватить имя хоста и протокол для создания нового URI.

Ответ 6

img.Source = новый BitmapImage (изображение uri) должен работать.

Ответ 7

img.Source = new BitmapImage(new Uri("/images/my-image.jpg", UriKind.Relative)); будет корректно разрешаться в корневом приложении Silverlight, где "../images/my-image.jpg" не будет.

Это верно только для кода, когда динамически устанавливается источник изображения. Вы не можете использовать это обозначение ( "/" для обозначения корня) в XAML (go fiquire, надеюсь, что они исправят это)

Ответ 8

Следующий код работал у меня только тогда, когда изображение включено в проект в качестве файла ресурсов:

img.Source = new BitmapImage(new Uri("/images/my-image.jpg", UriKind.Relative)); 

Я не могу получить доступ к URL из абсолютных URL-адресов. Даже URL-адрес фермы Flickr для изображений.