.NET Framework Class Library for Silverlight
Application.GetResourceStream Method (StreamResourceInfo, Uri)
Returns a resource file from a location in the specified zip package.
Namespace: System.Windows
Assembly: System.Windows (in System.Windows.dll)
Syntax
Visual Basic (Declaration)
Public Shared Function GetResourceStream ( _ zipPackageStreamResourceInfo As StreamResourceInfo, _ uriResource As Uri _ ) As StreamResourceInfo
C#
public static StreamResourceInfo GetResourceStream( StreamResourceInfo zipPackageStreamResourceInfo, Uri uriResource )
Parameters
- zipPackageStreamResourceInfo
- Type: System.Windows.Resources.StreamResourceInfo
A StreamResourceInfo that contains the zip package stream with the desired resource file.
- uriResource
- Type: System.Uri
A relative URI that identifies the resource file to be extracted from the zip package. The URI is relative to the application package and does not need a leading forward slash.
Return Value
Type: System.Windows.Resources.StreamResourceInfoA StreamResourceInfo that contains the stream for the desired resource file.
Exceptions
| Exception | Condition |
|---|---|
| ArgumentException |
The application class is not initialized. -or- uriResource is an absolute URI. |
| ArgumentNullException |
zipPackageStreamResourceInfo is null. -or- uriResource is null. |
Remarks
The GetResourceStream(StreamResourceInfo, Uri) method provides more flexibility than GetResourceStream(Uri) by allowing you to extract a resource file from an arbitrary zip package.
Examples
The following example shows how to extract an image resource file from a zip package that is located at the Silverlight application's site of origin.
XAML
<UserControl x:Class="SilverlightApplication.PageLong" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel x:Name="stackPanel" /> </UserControl>
Visual Basic
Imports System.Windows.Resources Imports System.IO Imports System.Windows.Media.Imaging Partial Public Class PageLong Inherits UserControl Private WithEvents webClient As New WebClient Public Sub New() InitializeComponent() ' Load an image resource file that is included in a ZIP package ' at the site of origin. ' Specify the zip package with the image resource to get. Dim uri As New Uri("ZIPPackageWithImage.zip", UriKind.Relative) ' Download the zip package. webClient.OpenReadAsync(uri) End Sub Private Sub webClient_OpenReadCompleted(ByVal sender As Object, _ ByVal e As OpenReadCompletedEventArgs) _ Handles webClient.OpenReadCompleted ' Extract the desired image from the zip package. Dim zipPackageStream As Stream = e.Result Dim image As Image = LoadImageFromZipPackage( _ "ImageInZipPackage.png", zipPackageStream) Me.stackPanel.Children.Add(image) End Sub Public Function LoadImageFromZipPackage( _ ByVal relativeUriString As String, _ ByVal zipPackageStream As Stream) As Image ' Get the image stream at the specified URI that ' is relative to the application package root. Dim uri As New Uri(relativeUriString, UriKind.Relative) Dim zipPackageSri As New StreamResourceInfo(zipPackageStream, Nothing) Dim imageSri As StreamResourceInfo = _ Application.GetResourceStream(zipPackageSri, uri) ' Convert the stream to an Image. Dim bi As New BitmapImage() bi.SetSource(imageSri.Stream) Dim img As New Image() img.Source = bi Return img End Function End Class
C#
using System; // Uri using System.IO; // Stream using System.Windows; // Application using System.Windows.Controls; // TextBlock, Image using System.Windows.Media.Imaging; // BitmapImage using System.Net; // WebClient using System.Windows.Resources; // StreamResourceInfo namespace SilverlightApplication { public partial class PageLong : UserControl { public PageLong() { InitializeComponent(); // Load an image resource file that is included in a ZIP package // at the site of origin. // Specify the zip package with the image resource to get. Uri uri = new Uri("ZIPPackageWithImage.zip", UriKind.Relative); // Download the zip package. WebClient webClient = new WebClient(); webClient.OpenReadCompleted += new OpenReadCompletedEventHandler( webClient_OpenReadCompleted); webClient.OpenReadAsync(uri); } void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { // Extract the desired image from the zip package. Stream zipPackageStream = e.Result; Image image = LoadImageFromZipPackage( "ImageInZipPackage.png", zipPackageStream); this.stackPanel.Children.Add(image); } public Image LoadImageFromZipPackage( string relativeUriString, Stream zipPackageStream) { // Get the image stream at the specified URI that // is relative to the application package root. Uri uri = new Uri(relativeUriString, UriKind.Relative); StreamResourceInfo zipPackageSri = new StreamResourceInfo(zipPackageStream, null); StreamResourceInfo imageSri = Application.GetResourceStream(zipPackageSri, uri); // Convert the stream to an Image. BitmapImage bi = new BitmapImage(); bi.SetSource(imageSri.Stream); Image img = new Image(); img.Source = bi; return img; } } }
Version Information
Silverlight
Supported in: 5, 4, 3Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
See Also