CustomXamlResourceLoader class
Collapse the table of content
Expand the table of content

CustomXamlResourceLoader class

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.




public ref class CustomXamlResourceLoader 


The CustomXamlResourceLoader class has these types of members:


The CustomXamlResourceLoader class has these constructors.

CustomXamlResourceLoader Initializes a new instance of the CustomXamlResourceLoader class.



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

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.



The CustomXamlResourceLoader class has these properties.

PropertyAccess typeDescription



Returns the active CustomXamlResourceLoader instance.



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} markup extension can be used from XAML in a similar way to {StaticResource} markup extension, 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} markup extension 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} markup extension. 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 (Windows 10 device family)

Device family

Universal, introduced version 10.0.10240.0

API contract

Windows.Foundation.UniversalApiContract, introduced version 1.0


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



Requirements (Windows 8.x and Windows Phone 8.x)

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]


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





See also

{StaticResource} markup extension
ResourceDictionary and XAML resource references



© 2017 Microsoft