В этой ситуации потребуется MultiDataTrigger. Попробуйте что-то вроде этого.
<Style
TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Selected}"/>
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type ListViewItem}">
<Border
Name="Border"
SnapsToDevicePixels="True"
Padding="2,2,2,2"
Background="Transparent">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsMouseOver}"
Value="True" />
<Condition
Binding="{Binding DoBlink}"
Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard
Name="Flash">
<Storyboard
FillBehavior="Stop">
<ColorAnimation
Storyboard.TargetProperty="Background.Color"
Storyboard.TargetName="Border"
From="Blue"
To="LightBlue"
Duration="0:0:0.2"
AutoReverse="True"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsMouseOver}"
Value="False" />
<Condition
Binding="{Binding DoBlink}"
Value="True" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<StopStoryboard
BeginStoryboardName="Flash" />
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Вам также потребуется использовать MultiDataTrigger, чтобы остановить анимацию, когда условие соответствует, когда вы хотите, чтобы оно остановилось.
РЕДАКТИРОВАТЬ: Вы можете прочитать о MultiDataTriggers здесь
РЕДАКТИРОВАТЬ 2: я изменил код для работы с шаблоном элемента управления и добавил набор условий, чтобы остановить анимацию при выборе другого элемента.
РЕДАКТ. 3: Удалить ненужное условие IsSelected.