Man kann in WPF die einzelnen Elemente statisch und dynamisch Ressourcen hinzufügen. Ein einfaches Beispiel dazu:
Ich weise dem StackPanel eine statische Ressource mit StackPanel.Resources zu und definiere für den Button einen Style
1 2 3 4 5 6 7 8 | <StackPanel Name="myStackPanel"> <StackPanel.Resources> <Style x:Key="style"> <Setter Property="Button.Background" Value="Blue" /> </Style> </StackPanel.Resources> <Button Style="{DynamicResource style}" Content="Klick" Name="btn" Click="BtnClick" /> </StackPanel> |
In der Code Behind kann ich diesen Style nun dynamisch verändern, in dem ich neue Eigenschaften hinzufüge, den alten Style lösche und den neuen hinzufüge.
1 2 3 4 5 6 7 8 9 10 11 12 13 | void BtnClick(object o, RoutedEventArgs e) { if (myStackPanel.Resources.Count > 0) { Style myBtnStyle = new Style(typeof(Button)); myBtnStyle.Setters.Add(new Setter(Button.BackgroundProperty, Brushes.LightBlue)); myBtnStyle.Setters.Add(new Setter(Button.FontFamilyProperty, new FontFamily("Times New Roman"))); myBtnStyle.Setters.Add(new Setter(Button.FontSizeProperty, 20.0)); myStackPanel.Resources.Remove("style"); myStackPanel.Resources.Add("style", myBtnStyle); btn.Content = "Neuer Style"; } } |







