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";
}
} |