Анимации имеют свойство с именем FillBehavior , значением по умолчанию является HoldEnd .
После завершения анимации MouseUp в ней сохраняется значение, препятствующее правильному отображению анимации мыши. Анимация при наведении мыши на самом деле работает, но покрыта анимацией при наведении мыши. Если вы измените порядок своих триггеров, поместив сначала IsPressed, вы увидите, что анимация IsMouseOver покрывает все анимации IsPressed.
Вы можете установить FillBehavior на Остановить , чтобы анимации прекратили закрывать свойство после завершения.
В вашем случае, установка FillBehavior на Stop для вашей MouseOutAnimation и MouseUpAnimation делает свое дело.
(В этом примере он установлен на раскадровке, поэтому он применяется ко всем содержащимся анимациям.)
<ControlTemplate.Resources>
<Storyboard x:Key="MouseOverAnimation" Storyboard.TargetProperty="Color">
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop1" To="#ffefefff" Duration="0:0:0.2" />
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop2" To="#ffc7c7ff" Duration="0:0:0.2" />
</Storyboard>
<Storyboard x:Key="MouseOutAnimation" Storyboard.TargetProperty="Color"
FillBehavior="Stop"> <!-- <=================== -->
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop1" To="#ffeeeeee" Duration="0:0:0.2" />
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop2" To="#ffcccccc" Duration="0:0:0.2" />
</Storyboard>
<Storyboard x:Key="MouseDownAnimation" Storyboard.TargetProperty="Color">
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop1" To="#ffc7c7ff" Duration="0:0:0.1" />
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop2" To="#ff9a9aff" Duration="0:0:0.1" />
</Storyboard>
<Storyboard x:Key="MouseUpAnimation" Storyboard.TargetProperty="Color"
FillBehavior="Stop"> <!-- <=================== -->
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop1" To="#ffefefff" Duration="0:0:0.1" />
<ColorAnimation Storyboard.TargetName="ButtonBorderGradientStop2" To="#ffc7c7ff" Duration="0:0:0.1" />
</Storyboard>
</ControlTemplate.Resources>
Дополнительную информацию о FillBehavior можно найти в статье MSDN Обзор анимации в разделе Что происходит после окончания анимации? .