У меня странная проблема с цветной анимацией.
У меня есть список элементов, привязанных к списку. Эти элементы имеют свойство перечисления, которое может иметь одно из трех значений - NoRemarks, RemarksFound и RemarksUpdated.
На табличке данных этого списка у меня есть прямоугольник, который отображает цвет, связанный со статусом элемента - красный, оранжевый или зеленый. В шаблоне есть триггер данных для анимации блока, но всякий раз, когда срабатывает анимация, кажется, что она как бы сохраняет старые цвета. Если я оживляю от красного к зеленому, я получаю что-то вроде оранжево-темно-зеленого цвета. Если я анимирую от оранжевого к зеленому, я получаю аналогичный цвет, хотя я вижу, что цвет немного отличается от цвета, когда я анимирую от красного к зеленому.
Вот XAML - я включил только необходимые части:
Прямоугольник:
<Rectangle x:Name="HeaderRemarkStatusRectangle" Grid.Column="1" Grid.Row="0" Grid.RowSpan="3" HorizontalAlignment="Left"
RadiusX="1" RadiusY="1" Width="10" Margin="3" StrokeThickness="1" >
<Rectangle.Stroke>
<SolidColorBrush Color="#FFDC5A5A" x:Name="RectangleStroke" />
</Rectangle.Stroke>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#ff7a7a" Offset="0.5" x:Name="GradientStop1" />
<GradientStop Color="#ff5653" Offset="0.5" x:Name="GradientStop2" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
Триггеры:
<DataTrigger Binding="{Binding Path=ItemStatus}" Value="RemarksUpdated">
<DataTrigger.EnterActions>
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard Duration="0:0:0.5" >
<ColorAnimation Storyboard.TargetName="GradientStop1" Storyboard.TargetProperty="Color" To="#83ec71" />
<ColorAnimation Storyboard.TargetName="GradientStop2" Storyboard.TargetProperty="Color" To="#5dda4e" />
<ColorAnimation Storyboard.TargetName="RectangleStroke" Storyboard.TargetProperty="Color" To="#FF50AA46" />
</Storyboard>
</BeginStoryboard.Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
Я попробовал несколько вещей, чтобы исправить проблему ...
Я попытался настроить Datatrigger.exitactions для каждого триггера так, чтобы он возвращал цвет к белому (немного выдумка, но я хотел увидеть, не было ли проблемой отсутствующий раздел «От»). Когда сработала анимация, у меня получился полупрозрачный прямоугольник, хотя и подходящего цвета.
Я также попытался установить свойство «from» - опять же, это не совсем практично, поскольку я не знаю, каким будет исходный цвет для триггера, но я хотел увидеть эффект. Получил результат, аналогичный приведенному выше.
Также попытался изменить свойство FillBehaviour, но установка его на «стоп» означала, что цвет вернется к исходному цвету, как только анимация будет завершена (как и ожидалось).
Я думал, что анимация будет анимироваться из текущего цвета (либо из таблицы данных, либо из текущей анимации, если она существует), и будет анимироваться в новый цвет. Я не могу понять, почему у меня появляется цвет между исходным и новым цветом. Это известная проблема с цветной анимацией или проблема с моими триггерами?
Спасибо всем