Рассмотрим следующую простую форму WPF, мы попробуем анимировать Высота border1:

Это XAML для border1:
<Border Margin="3" BorderBrush="Black" BorderThickness="1" Name="border1">
<Border.Style>
<Style>
<Setter Property="Control.Height" Value="50" />
<Style.Triggers>
<DataTrigger Binding="{Binding X}" Value="1">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="Height" To="100" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding X}" Value="2">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="Height" To="200" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding X}" Value="3">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="Height" To="300" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="{Binding X}" />
</Border>
X является нормальным DependencyProperty
, и кнопки работают без проблем, а содержимое TextBlock внутри border1 показывает измененное значение.
Теперь проблема в Высоте может быть только Увеличение ! Например, при нажатии 1 высота увеличивается до 100, при нажатии 3 она увеличивается до 300 , но при нажатии 2 высота не изменяется.
Если я установлю начальную высоту border1, например, на 400, все кнопки могут уменьшить ее до 100, 200 или 300, но после этого этапа никакая анимация не сможет уменьшить высоту границы.
Я упускаю какой-то очевидный момент, касающийся анимации WPF?