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
- 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.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.
<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.