Share via


Application.GetResourceStream Method (StreamResourceInfo, Uri)

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Returns a resource file from a location in the specified zip package.

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)

Syntax

'Declaration
Public Shared Function GetResourceStream ( _
    zipPackageStreamResourceInfo As StreamResourceInfo, _
    uriResource As Uri _
) As StreamResourceInfo
public static StreamResourceInfo GetResourceStream(
    StreamResourceInfo zipPackageStreamResourceInfo,
    Uri uriResource
)

Parameters

  • 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.StreamResourceInfo
A 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 nulla null reference (Nothing in Visual Basic).

-or-

uriResource is nulla null reference (Nothing in Visual Basic).

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.

Run this sample

<UserControl x:Class="SilverlightApplication.PageLong"
    xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">

    <StackPanel x:Name="stackPanel" />

</UserControl>
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
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, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.