Проблема, с которой я сталкиваюсь, заключается в том, что если я основываю стиль на втором стиле, содержащем раскадровку, то возникает исключение в Trigger.ExitAction.
Когда мышь покидает синий прямоугольник (, который использует производный стиль), я получаю это исключение:
InvalidOperationException:Имя «MouseOverStoryboard» не может быть найдено в области имен «System.Windows.Style».
Итак,:
В конце концов, чего я пытаюсь добиться, -используйте стиль, содержащий триггеры и раскадровки, в нескольких других стилях.
Вот простой код, демонстрирующий проблему.:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.Resources>
<Style x:Key="rectStyle" TargetType="{x:Type Rectangle}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard x:Name="MouseOverStoryboard">
<Storyboard>
<ColorAnimation To="PaleGoldenrod"
Storyboard.TargetProperty="(Fill).(Color)"
Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="MouseOverStoryboard"/>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="rectStyle2" TargetType="{x:Type Rectangle}"
BasedOn="{StaticResource rectStyle}"/>
</Grid.Resources>
<Rectangle Grid.Row="0" Width="100" Height="100" Fill="Red"
Style="{StaticResource rectStyle}" />
<Rectangle Grid.Row="1" Width="100" Height="100" Fill="Blue"
Style="{StaticResource rectStyle2}" />
</Grid>