CustomXamlResourceLoader class

Applies to Windows and Windows Phone

Enables loading of custom resource dictionaries as sources. Override GetResource to provide the logic that a XAML parser can use to look up the necessary resources at load time.

Inheritance

Object
  CustomXamlResourceLoader

Syntax


public class CustomXamlResourceLoader

Attributes

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]
[WebHostHidden()]

Members

The CustomXamlResourceLoader class has these types of members:

Constructors

The CustomXamlResourceLoader class has these constructors.

ConstructorDescription
CustomXamlResourceLoader Initializes a new instance of the CustomXamlResourceLoader class.

 

Methods

The CustomXamlResourceLoader class has these methods. It also inherits methods from the Object class.

MethodDescription
GetResource When overridden in a derived class, specifies the logic of resource lookup for this CustomXamlResourceLoader. Given a resource ID and some type information about the expected result, returns the requested resource.

 

Properties

The CustomXamlResourceLoader class has these properties.

PropertyAccess typeDescription

Current

Read/writeReturns the active CustomXamlResourceLoader instance.

 

Remarks

CustomXamlResourceLoader supports a markup extension usage {CustomResource}. This markup extension is unique to the Windows Runtime XAML framework (it did not exist in precursor XAML technologies such as Windows Presentation Foundation (WPF) and Microsoft Silverlight.)

A {CustomResource} usage doesn't work by default (the base implementation of GetResource is incomplete). To make a valid {CustomResource} reference, you must perform each of these steps:

  1. Derive a custom class from CustomXamlResourceLoader and override GetResource method. Do not call base in the implementation.
  2. Set CustomXamlResourceLoader.Current to reference your class in initialization logic. This must happen before any page-level XAML that includes the {CustomResource} extension usage is loaded. One place to set CustomXamlResourceLoader.Current is in the Application subclass constructor that's generated for you in the App.xaml code-behind templates.
  3. Now you can use {CustomResource} extensions in the XAML that your app loads as pages, or from within XAML resource dictionaries.

CustomResource can be used from XAML in a similar way to StaticResource, which performs built-in resource lookup from various ResourceDictionary locations. The difference is that the app itself implements the resource lookup logic for a CustomResource usage by supplying a custom resource loader. To implement the custom resource loader, the application must provide a class that derives from CustomXamlResourceLoader and override the GetResource method. The app must register its custom resource loader by setting the static property CustomXamlResourceLoader.Current to an instance of its custom resource loader class. This registration must be done on a XAML UI thread before any parsing of XAML that uses CustomResource. If the application uses multiple UI threads, a separate registration must be done on each.

The way in which the CustomXamlResourceLoader stores its resources is probably not related to ResourceDictionary at all. Typically, in addition to the required overrides, your CustomXamlResourceLoader class would provide internal or public methods that enable storing, keying and otherwise working with the resource items in an underlying collection.

Requirements

Minimum supported client

Windows 8 [Windows Store apps only]

Minimum supported server

Windows Server 2012 [Windows Store apps only]

Minimum supported phone

Windows Phone 8.1 [Windows Runtime apps only]

Namespace

Windows.UI.Xaml.Resources
Windows::UI::Xaml::Resources [C++]

Metadata

Windows.winmd

See also

StaticResource
ResourceDictionary and XAML resource references

 

 

Show:
© 2014 Microsoft. All rights reserved.