I have a few styles in my App.xaml
file:
<SolidColorBrush x:Key="styleBlue" Color="#FF4B77BE"/>
<SolidColorBrush x:Key="styleRed" Color="#FFF64747"/>
<SolidColorBrush x:Key="styleOrange" Color="#FFF89406"/>
<SolidColorBrush x:Key="styleGreen" Color="#FF1BBC9B"/>
<SolidColorBrush x:Key="styleYellow" Color="#FFF9BF3B"/>
<Style x:Key="stackpanelBackground" TargetType="StackPanel">
<Setter Property="Background" Value="{StaticResource styleBlue}"/>
</Style>
I want to change the BackgroundProperty
in the code of my mainpage.xaml.cs
.
I tried using this:
Style style = Application.Current.Resources["stackpanelBackground"] as Style;
style.Setters.SetValue(StackPanel.BackgroundProperty, "{StaticResource styleRed}");
But I get a catastrophic failure exception. I think it has to do with {StaticResource styleRed}
. Is there a better way to do this?
A
StaticResource
is static. You can't change them once the application has compiled.For this purpose, there is
DynamicResource
:Also note that you can find the reference to the other resource better using
FindResource
. Try something like this (full working sample):In
MainPage.xaml
:In
MainPage.xaml.cs
: