Application.GetResourceStream Method (Uri)

May 11, 2014

Returns a resource file from a location in the application package.

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

public static StreamResourceInfo GetResourceStream(
	Uri uriResource
)

Parameters

uriResource
Type: System.Uri
A relative URI that identifies the resource file to be loaded. If the file has a Build Action of Content, the URI is relative to the application package and you should not use a leading forward slash. If the file has a Build Action of Resource, you can use a leading forward slash, but it is not required.

Return Value

Type: System.Windows.Resources.StreamResourceInfo
A StreamResourceInfo that contains the stream for the desired resource file or null if the specified resource cannot be found.

ExceptionCondition
ArgumentException

The application class is not initialized.

-or-

uriResource is an absolute URI.

ArgumentNullException

uriResource is null.

The GetResourceStream method enables you to load resource files with Content or Resource set as the Build Action property value. The following table lists the file types you can load with GetResourceStream:

File Location

Build Action

Notes and URI Example

Embedded in the application assembly in the application package

Resource

You can use a leading forward slash, but it is not required.

/Application;component/EmbeddedInApplicationAssembly.png

Included in the application package

Content

You should not use a leading forward slash.

IncludedInApplicationPackage.png

For performance reasons, if possible, you should set the Build Action for resources to Content, and load them accordingly.

The following code shows how to use GetResourceStream to load an image resource file from these two locations.


<!--ContentPanel - place additional content here-->
<StackPanel x:Name="stackPanel" Grid.Row="1"/>



using Microsoft.Phone.Controls;
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.Windows.Resources; // StreamResourceInfo

namespace PhoneApp1
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();

            // Load image resource files included in the application package 
            // and resources that are embedded in assemblies included in the
            // application package.

            // Load an image resource file embedded in the application assembly.
            Image img1 = LoadImage(
                "/PhoneApp1;component/EmbeddedInApplicationAssembly.png");
            this.stackPanel.Children.Add(img1);

            // Load an image resource file included the application package.
            Image img2 = LoadImage("IncludedInApplicationPackage.png");
            this.stackPanel.Children.Add(img2);

        }

        public Image LoadImage(string relativeUriString)
        {
            // Get the image stream at the specified URI that
            // is relative to the application package root.
            Uri uri = new Uri(relativeUriString, UriKind.Relative);
            StreamResourceInfo sri = Application.GetResourceStream(uri);

            // Convert the stream to an Image object.
            BitmapImage bi = new BitmapImage();
            bi.SetSource(sri.Stream);
            Image img = new Image();
            img.Source = bi;

            return img;
        }
    }
}


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2014 Microsoft