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
- Static Resource
- Dynamic Resource
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
- <Grid.Resources>
- <SolidColorBrush x:Key="lblbgcolor" Color="Blue"/>
- </Grid.Resources>
- <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>
- <Window.Resources>
- <SolidColorBrush x:Key="brush" Color="Red" />
- </Window.Resources>
- <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
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- this.btn.SetResourceReference(BackgroundProperty, "brush");
- }
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
Ammar ShaukatPosted Sep 25, 2015, 10:56 AM
Very easy simple and helping . Thanks. Anil..
Vijay DahitePosted Oct 23, 2012, 7:46 AM
Very Nice Article Anil....
Kieran CallaghanPosted Jan 2, 2012, 12:35 PM
This article has helped me understand the difference between static and dynamic resources. From what I understand you are saying static resoused Is mostly used at load time and dynamic are better suited during runtime of our applications. Can you recommend further arlicals on the subject? Kind regards, kieran
syed ahmededitedPosted May 16, 2011, 12:56 AMEdited May 16, 2011, 12:57 AM
Hi Anil, This is a good article about Resources....... I am a Beginner this article helped in understanding the Resources...
Raj KumarPosted Feb 18, 2011, 1:24 AM
easy to understand the concept of resources. keep up the good work.
Mahesh ChandPosted Aug 29, 2010, 1:15 PM
Good work Anil. Simple and easy to understand.
scott andersonPosted Aug 7, 2009, 8:24 AM
Nice articile, this helped me alot to know about the concept of resources in WPF. Expecting many more helpful articles from you. Regards, Nagesh.