2009-02-23 11 views
30

Dynamicznie generuję obraz za pomocą kodu w Silverlight i najwyraźniej źródło obrazu nie przyjmuje ciągu lub URI jako ścieżki.Jak ustawić Image.Source w Silverlight (Code behind)

Jak ustawić źródło?

+0

ten zajęło mi trochę czasu, aby się dowiedzieć. Odpowiedź Guantama wygląda tak, jak użyłem. – BenMaddox

+0

Musiałem go jednak nieco zmienić, zadziałało bez uwzględnienia przestrzeni nazw w ścieżce – Drahcir

Odpowiedz

53

Jak myślisz, że nie zaakceptuje łańcucha jako źródła?

Nie jesteś w stanie tego zrobić?

Czy mówisz, że twój obraz jest w pamięci i nie wiesz, jak się do niego odwoływać?

this.MyImage.Source = new BitmapImage(new Uri("/MyNameSpace;images/someimage.png", UriKind.Relative)); 
+1

Nie akceptuję napisu i miałem na przykład: MyImage.Source = "/MyNameSpace;images/someimage.png" jak w asp.net – Drahcir

+0

ah, potrzebowałem tego! – Michel

+4

mój projekt musi zawierać "komponenty": this.MyImage.Source = new BitmapImage (nowy Uri ("/ MyNameSpace; components/images/someimage.png", UriKind.Relative)); – Raptor

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 + "/image111.jpg", UriKind.Absolute)); 
+0

nie trzeba iść na protokół HTTP. wystarczy użyć lokalnego zasobu. – Raptor

1

Musiałem wymienić następujące czynności, aby dostać pracę Rozwiązanie:

this.MyImage.Source = new BitmapImage(new Uri("/MyNameSpace;components/images/someimage.png", UriKind.Relative)); 

MyNamespace nie dla mnie, ale ExecutingAssemblyName zrobił, więc:

Dim tmp As String() = Assembly.GetExecutingAssembly.FullName.Split(","c) 
Dim path As String = "/" & tmp(0) & ";component/images/" 
MyImage.Source = new BitmapImage(new Uri(path & "someImage.png")) 
Powiązane problemy