Resources Property

FrameworkElement.Resources Property

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Gets the locally defined resource dictionary. In XAML, you can establish resource items as child object elements of a frameworkElement.Resources property element, through XAML implicit collection syntax.

Namespace:  System.Windows
Assembly:  System.Windows (in System.Windows.dll)
XMLNS for XAML: Not mapped to an xmlns.

Public Property Resources As ResourceDictionary

XAML Values


One or more object elements, each of which creates and defines a resource. Each resource property element in a ResourceDictionary must have a unique key (typicallyx:Key), specified as an attribute. The key is used when values are retrieved from the ResourceDictionary.

Property Value

Type: System.Windows.ResourceDictionary
The current locally defined dictionary of resources, where each resource can be accessed by its key.

Resource dictionaries that can be defined completely or partially in XAML are typically created through a XAML property element for the Resources property, and are typically on the root for any individual page of an application or for the Application itself (this might be a derived class if you are using a customized Application). Placing the resource dictionary at root level in XAML makes it more predictable to reference resources in scope from individual child objects in the object tree defined in a XAML page.

Resources created from a XAML-defined resource dictionary can be referenced by code by calling the ResourceDictionary API after you get the value for Resources, but be aware that resources created in XAML will definitely not be accessible until after Loaded is raised by the object that declares the dictionary, and also be aware that dictionary lookup behaves differently in an applied template.

The underlying ResourceDictionary type of the property's value supports the members that are required to add, remove, or query resources in the dictionary by using code.

Notice that the XAML syntax shown does not include an object element for the ResourceDictionary class. This is an example of XAML implicit collection syntax; a tag representing the collection element can be omitted. The elements that are added as items to the collection are specified as child elements of a property element of a property whose underlying type supports a collection Add method.

One case where you should explicitly declare a ResourceDictionary object element in XAML is if you want to support merged resource dictionaries on an object. This is typically only done on the XAML root.

If you intend to use resources from XAML markup, you should map the XAML namespace for the XAML language through an xmlns declaration. Typically you see this as the x: prefix. This is necessary because resources defined in markup must each have a unique key value. Key is defined in the XAML language / x: namespace, and Key is generally the way to specify a resource key for Windows Phone, except for in some special scenarios. Mapping the XAML namespace for the XAML language to the x: prefix is already done for you by most (if not all) tools that produce the root elements of XAML for Windows Phone.

The following XAML shows a XAML definition of a simple Resources dictionary that contains one item, a DataTemplate.

    <DataTemplate x:Key="CBTemplate">
                <ColumnDefinition />
                <ColumnDefinition />
            <Image Grid.Column="0" Width="50" Height="50" 
                Source="{Binding Photo}" Stretch="Fill"/>
            <TextBlock Grid.Column="1" Text="{Binding Title}" 
                Margin="10" HorizontalAlignment="Left" FontSize="20"/>

The following example shows a typical code access to the Resources property. In this example the Resources property references is inline and immediately followed by an indexer usage that retrieves a ResourceDictionary item with the string key RainbowBrush. Note the explicit cast; the return value for items from the ResourceDictionary is always a generic object.

    Private Sub SetBGByResource(ByVal sender As Object, ByVal e As RoutedEventArgs) 
        Dim b As Button = TryCast(sender, Button) 
        b.Background = DirectCast(Me.Resources("RainbowBrush"), Brush) 
    End Sub 
End Class 

For other code examples using a ResourceDictionary, see ResourceDictionary.

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

© 2018 Microsoft