Есть ли способ в WPF создать стиль шаблона для StackPanel, который анимирует цвет в сгруппированной серии элементов управления Ellipse со скоростью 1 секунда и, что наиболее важно, запускается общим свойством видимости группы StackPanel?
У меня нет успеха в создании триггера в стиле шаблона, который работает со свойством видимости. Вот то, что я попробовал, стиль, который должен был быть применен к стеку, содержащий три элемента управления Ellipse:
<UserControl.Resources>
<Color x:Key="C_387DD4" R="56" G="125" B="212" />
<Color x:Key="C_D3D3D3" R="211" G="211" B="211" />
<Style TargetType="FrameworkElement" x:Key="AnimateOnVisibility">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"
Storyboard.TargetName="EL01"
Duration="0:0:4"
FillBehavior="HoldEnd"
RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="{StaticResource C_387DD4}"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="{StaticResource C_387DD4}"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="{StaticResource C_387DD4}"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"
Storyboard.TargetName="EL02"
Duration="0:0:4"
FillBehavior="HoldEnd"
RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="{StaticResource C_387DD4}"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="{StaticResource C_387DD4}"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)"
Storyboard.TargetName="EL03"
Duration="0:0:4"
FillBehavior="HoldEnd"
RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames.KeyFrames>
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:2" Value="{StaticResource C_D3D3D3}"/>
<DiscreteColorKeyFrame KeyTime="0:0:3" Value="{StaticResource C_387DD4}"/>
</ColorAnimationUsingKeyFrames.KeyFrames>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
В конечном итоге мне нужен горизонтальный ряд эллипса, который, когда свойство видимости StackPanel переходит в Visible, обеспечивает анимацию цвета в эллипсах слева направо - это дает пользователю ощущение «Пожалуйста, подождите», пока мой программное обеспечение делает некоторые фоновые вещи.