Есть свой стиль для кнопки. Сама кнопка, это два прямоугольника (на одном фоновый цвет, на другом изображение с прозрачностью).
<Rectangle Name="RectangleBackground"
HorizontalAlignment="Stretch"
Fill="#D01600"
Opacity="0"/>
<Rectangle Name="Rectangle"
HorizontalAlignment="Stretch"
Margin="5"
Fill="{TemplateBinding Control.Background}"
Opacity="1"/>
Все основные события работают (MouseEnter, MouseLeave, MouseDown). Вот пример одного из них:
<EventTrigger RoutedEvent="MouseDown" SourceName="Rectangle">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="RectangleBackground"
Storyboard.TargetProperty="Opacity"
From="1" To="0.5" Duration="0:0:0.15"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
Но при обработке события MouseUp оно действует только на ПКМ и СКМ. Вопрос, как отловить событие отпускания ЛКМ? И почему MouseUp отрабатывает не так как я ожидаю? В MSDN написано что событие должно происходить при отпускании любой кнопки мыши.