Bilder werden oft in das Silverlight Projekt eingebettet. Damit vergrößert sich aber das XAP Paket das der Benutzer im Hintergrund downloaded. Im XAP Paket befinden sich die Programmlogik, zusätzliche DLL’s wie für Datagrid und Resourcen wie Bilder und Videos. Je größer das ganze desto länger dauert der Download und umso länger muss der Benutzer warten.
Man kann aber Bilder und auch Videos recht einfach auslagern und bei Bedarf nachladen. Folgendes Beispiel verwendet die Klasse Webclient. Der Download erfolgt mit Openreadcompleted das einen Stream liefert. Da Silverlight nur asynchrone Connections unterstützt wird noch ein Callback (hier fertig genannt) definiert.
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Dim req As New WebClient
AddHandler req.OpenReadCompleted, AddressOf fertig
req.OpenReadAsync(New Uri("ppedv.jpg", UriKind.Relative))
End Sub
Wenn der Download fertig ist wird die Funktion angesprungen. Das Ergebnis erhält man als Stream. Diesen übergibt man einem Bitmap Objekt und weist es dann einen Silverlight Image Control ( hier image1) zu.
Public Sub fertig(ByVal sender As Object, ByVal e As OpenReadCompletedEventArgs)
Dim st As Stream = e.Result
Dim img As BitmapImage = New BitmapImage()
img.SetSource(e.Result)
image1.Source = img
End Sub