Я хочу иметь DataTemplate, который я могу использовать в ItemsControl.Каждый отдельный объект DataTemplate должен быть анимирован независимо, слушая DataTriggers.
Этот DataTemplate в настоящее время выглядит так:
<DataTemplate x:Key="WindowButton">
<DataTemplate.Resources>
<Style TargetType="ContentControl" x:Key="IconControl">
<Style.Resources>
<ContentControl x:Key="DrawerOpened" Content="{DynamicResource DrawerOpenedTemplate}" />
</Style.Resources>
<Style.Triggers>
<DataTrigger Binding="{Binding IsOpened}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" RepeatBehavior="1x" Duration="0:0:0.5"/>
<ObjectAnimationUsingKeyFrames Duration="0" BeginTime="0:0:0.5" Storyboard.TargetProperty="Template">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource DrawerOpened}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" BeginTime="0:0:0.5" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<!--<Setter Property="Template" Value="{DynamicResource DrawerOpenedTemplate}" />-->
</DataTrigger>
<DataTrigger Binding="{Binding IsOpened}" Value="False">
<Setter Property="Template" Value="{DynamicResource DrawerClosedTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsWorking}" Value="True">
<Setter Property="Template" Value="{DynamicResource WaitSpinnerTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataTemplate.Resources>
<Button Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Path=DataContext.WindowControlClickCommand}" CommandParameter="{Binding }">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<ContentControl Height="50" Width="50" Style="{DynamicResource IconControl}" Margin="5,10,0,0"></ContentControl>
<TextBlock HorizontalAlignment="Center" Margin="0,10,5,0" VerticalAlignment="Center" FontSize="30" Text="{Binding WindowLabel}" />
</StackPanel>
<TextBlock Grid.Row="1" Style="{StaticResource ActionLabelStyle}" Margin="0,0,0,5" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" />
</Grid>
</Button>
</DataTemplate>
Как вы можете видеть, я создал DataTemplate с его внутренним стилем, который связан снекоторые свойства и должны измениться при изменении привязки.
Итак, я создал раскадровку с несколькими различными анимациями - поэтому элемент управления постепенно исчезает, затем его шаблон изменяется на что-то другое, а затем он медленно появляется снова вразной формы.В целом это работает хорошо, но я хочу сделать его более красивым, добавив анимацию.
К сожалению, раскадровка не может анимировать вещи, которые не могут быть заморожены по каким-либо причинам - этот конкретный ContentControl представляет собой просто некоторую векторную графику, описанную в XAML (Viewbox + Canvas + Path inside) без каких-либо внешних ссылок, обернутых в ControlTemplate.
Как мне обойти это и добиться такого описанного поведения?