Resources:
It provide a simple way to reuse commonly defined objects and values. If we are defining the resource then we can use that resource a number of times. (Just like applying themes and css to web pages).
Two Types of Resource:
1. Static Resource.
2. Dynamic Resource.
STATIC RESOURCE:
StaticResources are resolved at compile time. Use StaticResources when it's clear that you don't need your resource re-evaluated when fetching it static resources perform better than dynamic resources
DYNAMIC RESOURCE:
DynamicResources are resolved at runtime. Use DynamicResources when the value of the resource could change during the lifetime of the Application.
Example for Static Resource:
In my WPF application page I have one textbox and two ellipses. In Window.Resources I defined the SolidColorBrush and the Style properties.
Code Sample:
<Window.Resources>
<SolidColorBrush x:Key="brush" Color="Green"></SolidColorBrush>
<SolidColorBrush x:Key="forbuttoncolor" Color="CadetBlue"></SolidColorBrush>
<Style TargetType="Border" x:Key="background">
<Setter Property="Background" Value="Orange"></Setter>
</Style>
<Style TargetType="TextBox" x:Key="TitleText">
<Setter Property="Background" Value="White"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Foreground" Value="#4E87D4"/>
<Setter Property="FontFamily" Value="Tahoma"/>
<Setter Property="Margin" Value="50,50,50,0"/>
<Setter Property="Width" Value="300"></Setter>
</Style>
</Window.Resources>
In above code you can observe x: Key attribute. x: Key uniquely identifies elements that are created and referenced in a XAML-defined dictionary.
Here I'm using above resources. Have a look at below code.
Syntax is :{ StaticResource x:keyName}
<Grid>
<StackPanel>
<Border Style="{StaticResource background}">
<DockPanel Height="300" Width="500">
<TextBox Style="{StaticResource TitleText}" Height="28" Width="150"> </TextBox>
<Ellipse DockPanel.Dock="Left" HorizontalAlignment="Left" Height="73" Fill="{StaticResource
brush}" Width="169"></Ellipse>
<Ellipse DockPanel.Dock="Right" HorizontalAlignment="Right" Width="149" Height="73" Fill="
{StaticResource forbuttoncolor}"></Ellipse>
</DockPanel>
</Border>