Accessing Resource at
runtime through Code
In WPF we can access the resource at runtime
and apply the value of resource to the control. In this example we are
going to see the resource which is mention in stack panel resource and later
bind it to the button background property.
If FindResource() doesn’t find the resource
key, then an exception is thrown, If we don’t knew whether the available of
resource then use TryFindResource() this will return null if the resource is
not available instead of error.
In the above image you can see the error resource not found, this is because the key is wrong.
XAML Code
<StackPanel Name="stackcontainer">
<StackPanel.Resources>
<LinearGradientBrush x:Key="mygradient" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Offset="0.0" Color="LightGray"/>
<GradientStop Offset="0.14" Color="Cyan"/>
<GradientStop Offset="0.7" Color="DarkCyan"/>
</LinearGradientBrush>
</StackPanel.Resources>
<Button Name="bt1" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Height="40" Click="bt1_Click">Apply Resource</Button>
</StackPanel>
C# Code
private void
bt1_Click(object sender, RoutedEventArgs e)
{
Control cnt
= sender as Control;
cnt.Background = cnt.TryFindResource("mygradient") as
Brush;
}
Output