You can achieve this by defining your style in Resource dictionary For example You want 2 kinds of appearance for a button lets say theme1 and theme2 So create 2 resource dictionaries such that each resource dictionary contains different style of your button. Then Bind your button style as
<Button Style = {DynamicResource ButtonStyle} Height =23 Width = 70/>
Where ButtonStyle is key of style defined in resource dictionary Now on user click theme1
System.Windows.Application.Current.Resources.MergedDictionaries.Clear();
System.Windows.Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri("/ProjectName;component/theme1.xaml", UriKind.RelativeOrAbsolute) });
and on user click theme2
System.Windows.Application.Current.Resources.MergedDictionaries.Clear();
System.Windows.Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary { Source = new Uri("/ProjectName;component/theme2.xaml", UriKind.RelativeOrAbsolute) });
Hope this helps..