Silverlight 2 - Here's a Button Template example.
I've converted a button style that we use in our Xceed DataGrid for WPF Resource Center in Silverlight 2. Feel free to check it out ! It demonstrates how to work with State storyboards which I had a hard time finding information about, hope this can help some ! :)

<Style TargetType="Button"
x:Key="resourceCenterButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="RootElement">
<Grid.Resources>
<Storyboard x:Key="MouseOver State">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="OverGlow"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeySpline="0,0,0.5,1"
KeyTime="00:00:00.4000000"
Value="0.3" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Pressed State">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="OverGlow"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeySpline="0,0,0.5,1"
KeyTime="00:00:00.4000000"
Value="1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Normal State">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="OverGlow"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeySpline="0,0,0.5,1"
KeyTime="00:00:00.4000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
<Border Width="{TemplateBinding Width}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border Width="Auto"
Height="Auto"
CornerRadius="2,2,2,2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="#33262626"
BorderBrush="{x:Null}"
Grid.Column="0"
Grid.ColumnSpan="2"
Grid.RowSpan="2"
BorderThickness="0,0,0,0" />
<Border CornerRadius="2,2,2,2"
BorderThickness="1,1,1,1"
HorizontalAlignment="Stretch"
x:Name="OverGlow"
Grid.ColumnSpan="1"
Grid.RowSpan="2"
Opacity="0">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#FF880000"
Offset="0" />
<GradientStop Color="#FFD64300"
Offset="1" />
</LinearGradientBrush>
</Border.BorderBrush>
<Border.Background>
<RadialGradientBrush GradientOrigin="0.497,0.154">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5"
CenterY="0.5"
ScaleX="1.232"
ScaleY="1.232" />
<SkewTransform AngleX="0"
AngleY="0"
CenterX="0.5"
CenterY="0.5" />
<RotateTransform Angle="0"
CenterX="0.5"
CenterY="0.5" />
<TranslateTransform X="0.022"
Y="0.106" />
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="#FFff9900"
Offset="0" />
<GradientStop Color="#FFdb5b03"
Offset="0.5722219944000244" />
<GradientStop Color="#FF990100"
Offset="0.9833329916000366" />
<GradientStop Color="#FF990000"
Offset="0.9888889789581299" />
</RadialGradientBrush>
</Border.Background>
</Border>
<Border x:Name="backgroundBorder"
BorderThickness="1,1,1,1"
Width="Auto"
Height="Auto"
CornerRadius="2,2,2,2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Grid.ColumnSpan="1"
Grid.Row="0"
Grid.RowSpan="2"
Background="#7F262626">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0,0"
StartPoint="0,1">
<GradientStop Color="#CC000000"
Offset="0" />
<GradientStop Color="#7F000000"
Offset="1" />
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
<Border x:Name="borderWhite"
BorderThickness="1,1,1,1"
Width="Auto"
Height="Auto"
CornerRadius="2,2,2,2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="{x:Null}"
Grid.RowSpan="2"
Margin="1,1,1,1">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0,0"
StartPoint="0,1">
<GradientStop Color="#7FFFFFFF"
Offset="0" />
<GradientStop Color="#4CFFFFFF"
Offset="1" />
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
<ContentPresenter HorizontalAlignment="Left"
Margin="4,0,4,0"
Foreground="{TemplateBinding Foreground}"
Content="{TemplateBinding Content}"
VerticalAlignment="Center"
Grid.Column="0"
Grid.RowSpan="2" />
<Border x:Name="glassBorder"
Margin="1,1,1,0"
VerticalAlignment="Stretch"
Width="Auto"
Height="Auto"
CornerRadius="2,2,10,10"
Grid.RowSpan="1"
Grid.ColumnSpan="1"
Opacity="1"
Visibility="Visible">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,0"
StartPoint="0.5,1">
<GradientStop Color="#00FFFFFF"
Offset="0" />
<GradientStop Color="#A5FFFFFF"
Offset="1" />
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Mathieu Drimonakos
Technical Designer
www.xceed.com