Resources in WPF

Resources in WPF

Windows Presentation Foundation (WPF) resources provide a simple way to reuse commonly defined objects and values. Resources in WPF allow you to set the properties of multiple controls at a time. For example you can set the background property on several elements in a WPF application using a single resource.
 
The best way of defining the resources is on a Window or Page element level. Any resource that you define for an element also applies to their child elements of that element. For example if you define a resource for a Window element that has a Grid as a child element, then the resources defined for the window elements can also be used by the grid element. However, if you define a resource for the grid element, then the resource applies only to the child elements of the grid element.
 
Syntax for resources in WPF as follows
 
<elementName propertyName="{markupExtension keyName}">
<!-Content -->
</elementName>
 
elementName: Name of the element that uses the resource
 
propertyName: Name of the property that takes its value from the resource
 
markupExtension: Define type of resource
 
keyName: key name of the resource, which is unique string to identify the resource
 
There are two types of resource, namely
  • StaticResource
  • DynamicResource

Let's see basics of both resources

Static Resource
 
We should use the StaticResource markup extension to define the resource as a static resource. The value of StaticResource is determined at the time of loading.
 
Let's have a sample program, Add the below code snippet in Window1.xaml file inside the Grid 
  1. <Grid.Resources>  
  2.             <SolidColorBrush x:Key="lblbgcolor" Color="Blue"/>  
  3.         </Grid.Resources>  
  4.         <Label Name="lbl" Margin="71,44,77,0" Background="{StaticResource lblbgcolor}" Height="49" />  

Above code, Grid control uses the Resources property (<Grid.Resources>) to define resource. SolidColorBrush resource named lblbgcolor defined. lblbgcolor resource is used to set the background property of lable.

Dynamic Resource
 
Dynamic Resource we use in a situation where we want to change the value of property at run time.
 
Let's have a sample program, Add the below code snippet in Window1.xaml file inside the Window element> 
  1. <Window.Resources>  
  2.         <SolidColorBrush x:Key="brush" Color="Red" />  
  3.     </Window.Resources>  
  4.     <Button x:Name="btn" Content="Click Me" Click="Button_Click" Background="{DynamicResource brush}" Height="100" Width="100" />  

Open Code behind and add the following code snippet 

  1. private void Button_Click(object sender, RoutedEventArgs e)  
  2. {  
  3.     this.btn.SetResourceReference(BackgroundProperty, "brush");  
  4. }  

Above code, Window control uses the Resources property (<Window.Resources>) to define resource. SolidColorBrush resource named brush defined. brush resource is used to set the background property of button.

Conclusion
 
I have covered basics of resources in WPF. I hope this will helps all the beginners to startup.
 
Reference
 
Dreamtech: WPF in simple steps