I did it like this:
<Style x:Key="RoundButtonTemplate" TargetType="Button"> <Setter Property="Width" Value="80"/> <Setter Property="Height" Value="80"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid> <Ellipse Name="OuterRing" Width ="80" Height ="80" Fill="DarkGreen"/> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Disabled"> <VisualState.Setters> <Setter Target="OuterRing.Fill" Value="LightGray"/> </VisualState.Setters> </VisualState> <VisualState x:Name="Normal"> <VisualState.Setters> <Setter Target="OuterRing.Fill" Value="DarkGreen"/> </VisualState.Setters> </VisualState> <VisualState x:Name="PointerOver"> <VisualState.Setters> <Setter Target="OuterRing.Fill" Value="DarkKhaki"/> </VisualState.Setters> </VisualState> <VisualState x:Name="Pressed"> <VisualState.Setters> <Setter Target="OuterRing.Fill" Value="Red"/> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
If you want more beautiful, with animations, then you need instead
<VisualState x:Name="Pressed"> <VisualState.Setters> <Setter Target="OuterRing.Fill" Value="Red"/> </VisualState.Setters> </VisualState>
use
<VisualState x:Name="Pressed"> <VisualState.Storyboard> <Storyboard> <ColorAnimation Duration="0:0:0.3" To="Red" Storyboard.TargetName="OuterRing" Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"/> </Storyboard> </VisualState.Storyboard> </VisualState>