Using DynamicResources in WPF


DynamicResource: DynamicResources are resolved at runtime. Use DynamicResources when the value of the resource could change during the lifetime of the Application.

 

I will show you an example regarding DynamicResource.

 

<Window.Resources>

<SolidColorBrush x:Key="brush" Color="BlueViolet"></SolidColorBrush>

<Style TargetType="Border" x:Key="background">

<Setter Property="Background" Value="Green"></Setter>

</Style>

</Window.Resources>

 

In my WPF application page I've one textbox and two ellipses. In Window.Resources I defined the SolidColorBrush and the Style properties.


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. 


You can use this syntax in xaml design page: {DynamicResource x:keyName}

 

<Grid>

<StackPanel>

<Border Style="{StaticResource background}">

<DockPanel Height="360" Width="312">                

<Button x:Name="button" Content="Click" Click="Button_Click" Background="CadetBlue" Height="40" Width="63" />

</DockPanel>

</Border>

</StackPanel>

</Grid>

 

And in code behind page (.xaml.cs), I write this code in button click event.

 

private void Button_Click(object sender, RoutedEventArgs e)

{

    this.button.SetResourceReference(BackgroundProperty, "brush");

}

 

Run the page and you can see the color change of the button after you click on it.

 

Result window looks like this.

 

DynamicResource.bmp

 

In my very next article, I will explain you about DynamicResource with Animation.


Hope you like this article; let me know if you have any queries.