Вам нужен EventTrigger
Дайте имя одному или обоим GradientStops вашей границы (не тем, что в вашем Trigger):
<GradientStop Color="#f1f1f1" Offset="1" x:Name="Stop2" />
И добавьте следующий EventTrigger к вашему ControlTemplate.Triggers:
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Stop2" Storyboard.TargetProperty="Color" To="Red" Duration="0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Если вы хотите изменить оба ваших градиентных стопа, обязательно дайте им обоим имя и выполните ColorAnimation для каждого из них по отдельности (я думаю, вы можете сделать их оба в одной раскадровке)
Надеюсь, это поможет!
Редактировать: Это сделает изменение постоянным при событии Click (я тестировал с VS 2010 Beta 2 и Button.MouseLeftButtonDown не работает, но Button.Click работает только для левой кнопки мыши, но не для правой кнопки мыши). Если вы хотите, чтобы изменение было только тогда, когда мышь нажата ... но возвращайтесь к нормальному значению, когда кнопка больше не нажимается ... тогда вам следует использовать триггер свойства IsPressed, как указано в другом ответе.