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