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
StaticResourceis 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: