Load style defined in Xaml and apply to the Button

image_pdfimage_print


   
  

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WpfApplication1" Height="231" Width="544" WindowStartupLocation="CenterScreen">
  <Window.Resources>
    <Style x:Key ="TiltStyle" TargetType = "{x:Type Button}">
      <Setter Property = "RenderTransform">
        <Setter.Value>
          <RotateTransform Angle = "30"/>
        </Setter.Value>
      </Setter>
    </Style>
    <Style x:Key ="GreenStyle" TargetType = "{x:Type Button}">
      <Setter Property = "Background" Value ="Green"/>
      <Setter Property = "Foreground" Value ="Yellow"/>
      <Setter Property ="FontSize" Value ="15" />
    </Style>
    <Style x:Key ="MouseOverStyle" BasedOn ="{StaticResource GreenStyle}" TargetType = "{x:Type Button}">
      <Style.Triggers>
        <Trigger Property ="IsMouseOver" Value ="True">
          <Setter Property ="FontSize" Value ="20" />
          <Setter Property ="Foreground" Value ="Black" />
        </Trigger>
      </Style.Triggers>
    </Style>
  </Window.Resources>

  <StackPanel>
    <ListBox Name ="lstStyles" Height ="60" Background = "Yellow"
        SelectionChanged ="comboStyles_Changed" />
    <Button Name="btnMouseOverStyle" Grid.Column="1"
      Height="40" Width="100" Click ="btnMouseOverStyle_Click">My Button</Button>
  </StackPanel>
</Window>
//File:Window.xaml.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;


namespace WpfApplication1
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();

      lstStyles.Items.Add("TiltStyle");
      lstStyles.Items.Add("GreenStyle");
      lstStyles.Items.Add("MouseOverStyle");
    }

    protected void comboStyles_Changed(object sender, RoutedEventArgs args)
    {
      System.Windows.Style currStyle = (System.Windows.Style)FindResource(lstStyles.SelectedValue);
      this.btnMouseOverStyle.Style = currStyle;
    }

    protected void btnMouseOverStyle_Click(object sender, RoutedEventArgs args)
    {
      MessageBox.Show("Clicked");
    }
  }
}